2015-09-22 8 views
5

मैं सी # (महान एपीआई, बीटीडब्लू) में जीएमएपी का उपयोग करके एक एप्लीकेशन विकसित कर रहा हूं, Google मानचित्र एपीआई के साथ भ्रमित नहीं होने के कारण, और मैंने तब से कुछ वाकई अच्छी और उपयोगी चीजें की हैं।जीएमएपी .नेट ऑफ़लाइन

मेरी समस्या यह है कि मेरे कुछ ग्राहकों के पास इंटरनेट कनेक्शन नहीं होगा, और इसलिए मुझे पृष्ठभूमि (मानचित्र) ऑफ़लाइन प्रदर्शित करने में सक्षम होना चाहिए। मैं सर्वर से अपना डेटा प्राप्त करने के लिए प्रॉपर्टी GMap.NET.AccessMode.ServerAndCache; का उपयोग करता था, और अब मैं पूर्ण कैश के साथ GMap.NET.AccessMode.CacheOnly का उपयोग करने में सक्षम होना चाहता हूं।

ऑफ़लाइन उपयोग के लिए तैयार करने के लिए उन्हें कनेक्शन के साथ कैश लोड करने देना एक विकल्प नहीं है, पीसी कभी भी इंटरनेट से कनेक्ट नहीं होंगे। कुछ शोध के बाद, मैंने सीखा कि OpenStreetMap एकमात्र ओपन सोर्स मैप है जो मुझे अपने मानचित्र का मुफ्त उपयोग करने की अनुमति देगा (और यह अच्छा है क्योंकि उनके पास बहुत अच्छे नक्शे हैं)। मैंने यूरोप का 20 जीबी मानचित्र डाउनलोड किया है, लेकिन मुझे नहीं पता कि कैश के रूप में इसे कैसे निर्दिष्ट किया जाए (मुझे पता है कैश फ़ोल्डर का पता कैसे लगाएं)।

अधिकांश समय, मेरी Google खोजों ने मुझे स्थानीय लोगों के माध्यम से उपयोग किए गए डीबी में सभी मानचित्र की टाइल्स के साथ वर्चुअल स्क्लाइट सर्वर बनाने की कोशिश करने वाले लोगों को दिखाया, लेकिन ईमानदारी से मुझे लगता है कि यह बहुत जटिल है और मैं जानना चाहता हूं कि कोई मुझे उन मानचित्रों का ऑफ़लाइन या इस एपीआई के दस्तावेज़ के लिए एक लिंक का उपयोग करने की अनुमति देने का विचार है, नेट पर ढूंढना असंभव है (मुझे स्रोत मिलते हैं, लेकिन लगभग कोई टिप्पणी नहीं और कोई स्पष्टीकरण नहीं)।

अग्रिम धन्यवाद, और मेरी बुरी अंग्रेजी के लिए खेद है।

रेपोंस एन फ्रांसीसी बिएनवेन्स।

+0

"अपने कुछ ग्राहकों के लिए एक इंटरनेट कनेक्शन की जरूरत नहीं होगी" की तरह दिखाई देगा की जाँच करें। वे इंट्रानेट तक नहीं पहुंच सकते हैं? यदि वे इंट्रानेट तक पहुंच सकते हैं, तो आप अपना खुद का OpenStreetMap टाइल सर्वर सेट कर सकते हैं। –

उत्तर

2

आप ऑफ़लाइन उपयोग के लिए टाइल्स को प्रीफ़ेच करने के लिए एक अलग प्रोग्राम बना सकते हैं। या जीमैप नेट डेमो प्रोग्राम (https://github.com/radioman/greatmaps/tree/master/Demo.WindowsPresentation)

ALT + माउस पहले बटन का उपयोग करके क्षेत्र चुनने के बाद नीचे दिया गया कोड बटन बटन के लिए है।

 RectLatLng area = mapView.SelectedArea; 

     if (!area.IsEmpty) 
     { 
      for (int i = (int)mapView.Zoom; i <= mapView.MaxZoom; i++) 
      { 
       TilePrefetcher obj = new TilePrefetcher(); 
       obj.Title = "Prefetching Tiles"; 
       obj.Icon = this.Icon; 
       obj.Owner = this; 
       obj.ShowCompleteMessage = false; 
       obj.Start(area, i, mapView.MapProvider, 100); 
      } 

      DialogResult = true; 
      Close(); 
     } 
     else 
     { 
      MessageBox.Show("No Area Chosen", "Error", MessageBoxButton.OK, MessageBoxImage.Error); 
     } 

(ज्यादातर Gmap नेट डेमो स्रोत से प्रतिलिपि)

https://github.com/radioman/greatmaps/tree/master/Demo.WindowsPresentation

फ़ाइलें सी में जमा हो जाती है: \ Users \ [अपना उपयोगकर्ता नाम] \ AppData \ Local \ GMap.NET \ TileDBv5 \ en

एक बार जब आप सफलतापूर्वक टाइल्स को प्रीफ़ेट कर चुके हैं तो आप फ़ाइलों को ऑफ़लाइन पीसी में उसी स्थान पर कॉपी कर सकते हैं और इसे इसका उपयोग करना चाहिए (या बस पूरे जीएमएपी.NET फ़ोल्डर को यूएसबी के माध्यम से ऑफलाइन पीसी पर कॉपी करें या जो भी हो)

कैश स्थान निर्दिष्ट करने के लिए
0

gmap.CacheLocation = @"C:\Users\xxx\Desktop\"; का उपयोग करें।

बस उसी निर्देशिका के तहत अलग मशीन पर कैश की प्रतिलिपि काम करेगा।

मानचित्र डाटा को कैश करने के लिए, मेरी GitHub https://github.com/williamwdu/GMap.NETChacher

कैश निर्देशिका इस TileDBv5\en\Data.gmdb

संबंधित मुद्दे