2011-04-08 8 views
6

मेरे पास अक्षांश और देशांतर (भू-बिंदु) है जो मानचित्र का केंद्र है। मैं अक्षांश और देशांतर से 4 मील की दूरी के ज़ूम स्तर को सेट करना चाहता हूं।एंड्रॉइड (मैप व्यू): मैपव्यू में 4 मील के ज़ूम स्तर को कैसे सेट करें?

अग्रिम धन्यवाद, अपने नक्शे के .setZoom(int); पैरामीटर के साथ

उत्तर

3

आप setzoom() का उपयोग कर सकते हैं - ऐसा करने के लिए कार्य करते हैं। नीचे दिया गया कोड this example में पाया जा सकता है।

mc = mapView.getController(); 
String coordinates[] = {"1.352566007", "103.78921587"}; 
double lat = Double.parseDouble(coordinates[0]); 
double lng = Double.parseDouble(coordinates[1]); 

p = new GeoPoint(
    (int) (lat * 1E6), 
    (int) (lng * 1E6)); 

mc.animateTo(p); 
mc.setZoom(17); 
+0

ज़ूम स्तर और दूरी से संबंधित Google मानचित्र पर कोई दस्तावेज़ है। – Mani

+0

मैं आपकी एक और टिप्पणी में देखता हूं, आप कहते हैं कि आप इसे कुछ क्षेत्रों के आधार पर गतिशील रूप से सेट करना चाहते हैं। क्या तुम्हारे लिए थोडा और अधिक विशिष्ट होना संभव है? अगर मैं इसे सही ढंग से समझता हूं, तो आप मानचित्र के निर्देशांक प्राप्त कर सकते हैं और ज़ूम स्तर सेट करने के लिए स्विच-ब्लॉक का उपयोग कर सकते हैं। किसी बिंदु पर आपको ज़ूम स्तर और क्षेत्रों को वैसे भी मैप करना होगा। – pecka85

+1

आप कैसे कह रहे हैं कि 4 मील दूरी 17 के ज़ूम स्तर से मेल खाती है? – Mani

-1

प्ले। मैं 15 के आसपास लगता है इसकी:

तो myMap.setZoom(15);

+0

मैं गतिशील निश्चित क्षेत्र के आधार पर ज़ूम स्तर सेट करना चाहते हैं। क्या यह संभव है? मैं हार्ड कोड नहीं चाहता "15" – Mani

+0

क्षेत्र/ज़ूमलेवल के साथ डेटाबेस बनाएं और उस से पढ़ें :-) आप डेटा स्टोर करने के लिए एक एसक्यूलाइट डेटाबेस का उपयोग कर सकते हैं। –

+0

MapView में setZoom विधि नहीं है। MapController करता है। – MSquare

14

हल:

Androd गूगल एपीआई से

: zoomlevel नक्शे के zoomlevel सेट। मूल्य 1 और 21 के बीच होने के लिए क्लैंप किया जाएगा, हालांकि सभी क्षेत्रों में उच्च ज़ूम स्तर पर टाइल्स नहीं हैं। यह सिर्फ ज़ूम का स्तर सीधे सेट करता है; पैरामीटर: ज़ूमलेवल - ज़ूमलेवल 1 पर, पृथ्वी का भूमध्य रेखा 256 पिक्सेल लंबा है। प्रत्येक क्रमिक ज़ूम स्तर को 2. के कारक द्वारा बढ़ाया जाता है: नया ज़ूम स्तर, 1 और 21 के बीच समावेशी।

तो दिया भूमध्य रेखा ई = 40075 किमी या 21.638,8 मील दूरी ज़ूम करने के लिए डी = 20 किमी या मील दिया

ज़ूम स्तर: एल = log2 (ई/डी) +1

यह सरल विधि मैं का उपयोग किया है ई = 21.638,8 स्थापित करने के लिए याद है कि आप मील की दूरी पर उपयोग करना चाहते हैं है ...

public static byte zoomLevel (double distance){ 
    byte zoom=1; 
    double E = 40075; 
    Log.i("Astrology", "result: "+ (Math.log(E/distance)/Math.log(2)+1)); 
    zoom = (byte) Math.round(Math.log(E/distance)/Math.log(2)+1); 
    // to avoid exeptions 
    if (zoom>21) zoom=21; 
    if (zoom<1) zoom =1; 

    return zoom; 
} 
+1

यह उत्तर मानचित्र दृश्य के आकार के लिए खाता नहीं है। एक बड़ी स्क्रीन पर आप एक ही ज़ूम स्तर पर अधिक इलाके देखते हैं। उदाहरण के लिए, 512 पिक्सेल की चौड़ाई के लिए आपको पूरी पृथ्वी दिखाने के लिए ज़ूम स्तर 2 की आवश्यकता है, 1024 (टैबलेट पर) के लिए - ज़ूम स्तर 3, इत्यादि। – JBM

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