2012-10-19 13 views
9

में कैश करने के लिए विशिष्ट मैपटाइल डाउनलोड करना मैं वर्तमान में एक स्कूल प्रोजेक्ट पर काम कर रहा हूं और मैं ओएसएम मैप टाइल्स को फोन की स्थानीय मेमोरी/कैश में डाउनलोड करने की तकनीक सीखने की कोशिश कर रहा हूं, ताकि उपयोगकर्ता ऑफ़लाइन होने पर नक्शे देख सकें ।OSMDroid

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

हालांकि, मुझे ओएसएमड्रॉइड के एपीआई को समझने में कुछ मामूली समस्या है। मेरी समझ से, ऐसा लगता है कि इसमें शामिल वर्ग हैं:

कृपया मुझे सही कर अगर मैं गलत कर रहा हूँ है।

इसके अलावा, MapTileBase (जो मुझे लगता है प्रदाता है) में, getMapTile android.graphics.drawable.Drawable देता है।

क्या यह ड्रायबल क्लास ऑफ़लाइन मानचित्र डिस्प्ले की अवधारणा से भी संबंधित है?

आशा किसी पर मुझे प्रबुद्ध कर सकते हैं जहां वास्तव में नक्शे फोन की स्मृति में डाउनलोड किया जा करने के लिए कहा जा रहा है, और हम इस तरह के नक्शे मार्गों, पिन के रूप में इंटरफ़ेस आइटम प्रदर्शित करने के लिए कैसे संपादित कर सकते हैं, आदि

+1

संभव डुप्लिकेट (http://stackoverflow.com/questions/22862534/download-maps-for-osmdroid) – yochannah

उत्तर

1

मैं डॉन ' टी का बिल्कुल जवाब नहीं है क्योंकि आप उस क्षेत्र के बाहर ऑफलाइन कैश करने के लिए एक विधि की तलाश में हैं, जिस पर MapView पहले से ही नेविगेट नहीं हुआ है। निर्मित कैशिंग समर्थन वहां है, लेकिन बिल्कुल नहीं कि आप इसे कैसे करना चाहते हैं।

यदि आप कैश करने की योजना बना रहे हैं और न केवल अपने ऑफ़लाइन मानचित्र टाइल्स की आपूर्ति करते हैं तो आपको ऑनलाइन डाउनलोड क्षमताओं की आवश्यकता होगी। मैं MapTileDownloader पर एक नज़र डालेगा और शायद इसके अपने संस्करण को लागू करने का प्रयास करूंगा। MapTileDownloader.TileLoader.loadTile() विधि एक MapTileRequestState लेती है जो मुझे लगता है कि मानचित्र टाइल की आवश्यकता होने पर MapTileProviderArray कॉल करता है।

यदि आप मौजूदा MapTileDownloader की TileLoader कार्यक्षमता को दोहरा सकते हैं, तो आप शायद अपने स्वयं के रिश्तेदार MapTileRequestState को इंजेक्ट कर सकते हैं या सीधे अनुरोध किए गए मैपटाइल को इंजेक्ट कर सकते हैं। जैसे MapTileRequestState नामक टाइल लोडर को लें, इसका निरीक्षण करें, वर्तमान दृश्य के बाहर टाइल का प्रतिनिधित्व करने वाले नए MapTileRequestState/MapTile का निर्माण कैसे करें। यह आसान नहीं होगा हालांकि आपको विभिन्न ज़ूम स्तरों से निपटना होगा, और ज़ूम स्तर के आधार पर, त्रिज्या छोटा होना चाहिए, आदि ... 18 के निचले ज़ूम स्तर में एक बड़ा टाइल त्रिज्या होगा एक उच्च 10.

व्यक्तिगत रूप से मैं हाल ही में 100% ऑफ़लाइन काम करने की कोशिश करने पर काम कर रहा था इसलिए मेरे पास मदद करने के लिए कोई उदाहरण कोड नहीं है। शुभकामनाएं हालांकि यह कुछ महीने हो गई है।

+2

के लिए धन्यवाद डाउनलोड कर रहे हैं इनपुट वैसे भी =) मैंने थोड़ी सी मैपटाइल्स निर्दिष्ट करने के माध्यम से इस समस्या को हल किया है, और ऑफलाइन डिस्प्ले के लिए फोन में उन्हें ज़िपित किया है। मैं एक ज़ूम स्तर के लिए डाउनलोड करने में कामयाब रहा, लेकिन कई ज़ूम स्तरों के साथ फिर से समस्याएं आईं [यहां] (http://stackoverflow.com/questions/13930364/asynctask-not-executing-properly-according-to-logic) – lyk

+0

यह बहुत बुरा है। मुझे हाल ही में एक ओएसएमड्रॉइड मैप व्यू के साथ-साथ ऑफ़लाइन टाइल मिल रही है जो कि सामान्य ऑनक्रेट() कन्स्ट्रक्टर की बजाय गतिविधि_माइन.एक्सएमएल से बनाई गई है: http://stackoverflow.com/questions/13894267/how-to-add-a- स्लाइडिंग -drawer एक MapView-दृश्य-thats-निर्मित-प्रोग्राम के रूप में – garlicman

0

सबसे पहले, सही स्रोत https://github.com/osmdroid/osmdroid

कुछ विकी लेख में मदद मिलेगी, विशेष रूप से ऑफ़लाइन मानचित्र शीर्षकों लेख है जाना। संक्षेप में, MOBAC या टूल osmdroid प्रदान करता है। OSMBonuspack में डिवाइस पर एक ही कार्य करने के लिए एक टूल भी है।

मानचित्र टाइल, वास्तव में इस वर्ग का उपयोग कर https://github.com/osmdroid/osmdroid/blob/master/osmdroid-android/src/main/java/org/osmdroid/tileprovider/modules/MapTileDownloader.java

की [osmdroid के लिए डाउनलोड नक्शे]