2013-06-24 8 views
37

पत्रक.जेएस का उपयोग कर रहा है और मेरे पास मार्कर पर मानचित्र को केन्द्रित करने का कोई तरीका चाहिए, ताकि उपयोगकर्ता लॉन्च होने पर उपयोगकर्ताओं के भीतर देख सकें। यदि सभी मार्कर एक छोटे से क्षेत्र में क्लस्टर किए जाते हैं, तो मैं मानचित्र को उस स्तर पर ज़ूम करना चाहता हूं जो अभी भी उन सभी को प्रदर्शित करता है।Leaflet.js मार्करों के समूह पर मानचित्र को

मुझे पता है कि Google मानचित्र में एक ऑटोसेन्टर फ़ंक्शन है लेकिन मैं इसके बारे में Leaflet.js के साथ कैसे जाऊं?

उत्तर

80

आप ज़ूम करने के लिए क्षेत्र बनाने के लिए L.LatLngBounds का उपयोग कर सकते हैं।

सबसे पहले, एक सीमा बना सकते हैं और यह L.LatLngs की एक सरणी पारित:

var bounds = new L.LatLngBounds(arrayOfLatLngs); 

यह एक सीमा है कि हर बात यह है कि सरणी में निहित है संपुटित जाएगा पैदा करेगा। एक बार जब आप सीमा है, तो आप नक्शे से मिलान करने के अपने बनाया बाध्य की सीमा से फिट कर सकते हैं:

map.fitBounds(bounds); 

यह, जहाँ तक यह जा सकते हैं में ज़ूम, जबकि अभी भी अपने सरणी में हर बिंदु से युक्त होगा।

वैकल्पिक रूप से, आप fitBounds विधि को बस कॉल करके और L.LatLng ऑब्जेक्ट्स की सरणी में गुजरकर भी कॉल कर सकते हैं। उदाहरण के लिए:

map.fitBounds([[1,1],[2,2],[3,3]]); 

यह बिल्कुल वैसा ही कार्य करेगा, एक विशिष्ट L.LatLngBounds वस्तु बनाने के लिए आवश्यकता के बिना।

+0

यह काम करता है, हालांकि फिट सीमाओं के साथ आपने उल्लेख किया होगा कि आपको आवश्यक सीमाएं उत्तर पश्चिम और दक्षिण पूर्व हैं। इसका उपयोग करने वाले भविष्य के संदर्भ के लिए, आपको अपने मार्करों पर अक्षांश और देशांतर दोनों के लिए अधिकतम और न्यूनतम मान मिलना होगा। – lorless

+6

'एल। लैट्लिंगबाउंड्स के दो निर्माता हैं। उनमें से एक आप वर्णन करते हैं - दो बिंदु, उत्तर-पश्चिम और दक्षिणपूर्व। हालांकि, दूसरा कन्स्ट्रक्टर किसी भी आकार के 'एल। लैट्लंग्स' की सरणी लेता है। इसके अतिरिक्त, मौजूदा सीमाओं के आकार को बढ़ाने के लिए आप 'L.LatLngBounds.extend()' को कॉल कर सकते हैं। इन दो विकल्पों में से किसी एक का उपयोग करके, आपको सीमाओं के आकार को मैन्युअल रूप से बढ़ाने के लिए चेक से अधिक/कम नहीं होना चाहिए। –

+0

उत्कृष्ट उत्तर और टिप्पणी प्रश्नों का पालन करने के लिए धन्यवाद, क्योंकि स्पष्टीकरण ने कार्यक्षमता को बेहतर ढंग से समझने में मदद की (यहां तक ​​कि 3 साल बाद भी) – redfox05

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