2009-12-24 9 views
11

हम इस तरह की समस्या पर ठोकर खा चुके हैं।फोर्स मैपकिट केवल कैश किए गए मानचित्र टाइल्स का उपयोग करें/नेटवर्क प्रोग्रामेटिक रूप से अक्षम करें

हम यात्रा के लिए एक आवेदन विकसित कर रहे हैं। यह सुनिश्चित करने के लिए कि उपयोगकर्ता हमारे ऐप में रोमिंग शुल्क पर अधिक पैसा नहीं लगाता है, हमने उपयोगकर्ता के लिए केवल कैश किए गए मानचित्र देखने के लिए सेटिंग विकल्प लागू करने का निर्णय लिया है। तो हम उपयोगकर्ता को यह तय करने देते हैं कि वह इंटरनेट से नक्शे लोड करना चाहता है या वह पैसा बचाना चाहता है और कैश किए गए मानचित्र (लाइब्रेरी/कैश/मैपटाइल्स/मैपटाइल्स.sqlitedb में संग्रहीत) देखना चाहता है।

हमें इसे लागू करने का कोई तरीका नहीं मिल रहा है। इस मामले में प्रोग्राम प्रोग्रामिक रूप से अक्षम करने का कोई तरीका है? या मैपकिट केवल कैश किए गए टाइल्स का उपयोग करें? हमने मैपकिट को ऑफ़लाइन जाने के लिए इस विकल्प के लिए एपीएन प्रोग्रामेटिक रूप से बदलने के बारे में सोचा था। क्या एपीएन प्रोग्रामेटिक रूप से बदलना संभव है?

धन्यवाद!

उत्तर

4

आईफोन एसडीके ऐप्स के पास नेटवर्क एडाप्टर सेटिंग्स तक पहुंच नहीं है, और मुझे मैपकिट एपीआई में कुछ भी नहीं पता है जो आपको अपने इंटरनेट उपयोग पर नियंत्रण देता है। इस मामले में आपका सबसे अच्छा विकल्प शायद एक चेतावनी पेश करना है जो यह बताता है कि उपयोगकर्ता हवाई जहाज मोड सक्षम करता है या डेटा रोमिंग बंद कर देता है।

+0

वास्तव में आईफोन एसडीके में पहुंच योग्यता एपीआई है जो उपयोगी है जब आपको पता होना चाहिए कि नेटवर्किंग सुलभ है या नहीं। – asdf

-1

गूगल मानचित्र एप्लिकेशन संचय सुविधा ... MapKit प्रतीत नहीं, मुझे लगता है कि एप्पल अगले संस्करण एसडीके में इस सुविधा को जोड़ देगा ...

+0

दरअसल हम अपने ऐप में कैश किए गए मानचित्र टाइल्स को बिना नेटवर्क कनेक्शन के देख सकते हैं। समस्या यह है कि हम ऐसी स्थिति को लागू नहीं कर सकते जहां उपयोगकर्ता "ऑफलाइन मोड" सेट करता है। जब यह विकल्प चुना जाता है तो हमें नेटवर्क कनेक्शन होने पर भी कैश किए गए मानचित्र टाइल्स प्रदर्शित करने की आवश्यकता होती है। इसलिए हमें मैपकिट को कैश किए गए टाइल्स का उपयोग करने और ऑनलाइन नहीं जाने की आवश्यकता है। Thx –

+0

शायद जब हम अनुमति नहीं देते हैं तो मानचित्र लोड करने का प्रयास करते समय एपीएन सेटिंग्स को बदलना संभव है। इस तरह ऐप ऑनलाइन नहीं जा पाएगा और स्थानीय डीबी का उपयोग करने के लिए मजबूर किया जाएगा। –

+0

मुझे लगता है कि Google आपको अपने मानचित्र का ऑफ़लाइन उपयोग करने के लिए मना करता है – CiNN

2

उपयोग OpenStreetMap लगता है कि यह के वाणिज्यिक ओर बादल निर्मित की अनुमति देता है है ऑफ़लाइन नक्शे

http://developers.cloudmade.com/projects/show/iphone-sdk

पुस्तकालय कि iPhone डेवलपर्स मदद OSM मानचित्र का उपयोग मार्ग-मुझे एक खुला स्रोत iPhone अनुप्रयोगों के एक नंबर OSM नक्शे प्रदर्शित करने के लिए में इस्तेमाल किया पुस्तकालय है। क्लाउडमेड आईफोन मैप्स लाइब्रेरी एक ओपन-सोर्स लाइब्रेरी है जो विभिन्न आकारों और विभिन्न शैलियों के साथ क्लाउडमेड के ओएसएम-आधारित मानचित्र टाइल्स तक उच्च स्तरीय पहुंच प्रदान करती है। जॉन मैककेरेल ने आईफोन पर चलाने के लिए गोसमोर से रूटिंग एल्गोरिदम पोर्ट किया है और सफलतापूर्वक मूल मार्ग तैयार किए हैं। अधिक जटिल मार्ग इस समय आईफोन को क्रैश करते हैं

+0

क्लाउडमेड आपको एप्लिकेशन में अपनी टाइल कैश करने की अनुमति देगा (मर्केटर टाइल सिस्टम का उपयोग करके), हालांकि यह अभी तक एपीआई द्वारा समर्थित नहीं है और आपको इसे स्वयं करने के लिए कार्यक्षमता लिखें (अभी के लिए)। – Willster

+0

डुनो अगर मैं क्लाउड-निर्मित के साथ जाऊंगा .. जांचें कि क्यों http://stackoverflow.com/questions/7928199/cloudmade-status#comment11002846_7928199 – HurkNburkS

0

कुछ तरीके हैं। एक है अपने टाइल ओवरले का उपयोग करना और यूआरएलफोरटाइलपाथ में या तो कैशिंग एल्गोरिदम लागू करना: या लोडटाइल एटपाथ में: परिणाम:

यह खुले डोमेन और कुछ निजी लोगों के साथ बहुत अच्छी तरह से काम करता है। मानक ऐप्पल मैप्स कैश नहीं करता है।

एक और तरीका जो सबकुछ कैश करने में सक्षम होगा सबक्लस NSURLProtocol है। कुछ ट्यूटोरियल हैं और शायद आप यह पता लगा सकते हैं कि नक्शा छवि कब है और तदनुसार कार्य करें

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