2011-03-02 11 views
21

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

me.center_map = function(latlng, r) 
{ 
    // latlng is the point of the zipcode 
    var circ = new google.maps.Circle(); 
    circ.setRadius(r * 1609.0); 
    circ.setCenter(latlng); 
    map.setCenter(latlng); 
    map.fitBounds(circ.getBounds()); 

    // updates markers 
    google.maps.event.trigger(map,'dragend'); 
}; 

संपादित करें: ड्रयू चक्र है कि मैं उपयोग कर रहा हूँ। आदर्श रूप से नक्शा त्रिज्या के भीतर के क्षेत्र में ज़ूम किया जाएगा।

enter image description here

उत्तर

21

fitBounds करने के लिए कॉल() सबसे छोटी ज़ूम स्तर है कि पूरी तरह से सीमा में शामिल है पर ज़ूम करेंगे। यदि आप 1 और ज़ूम स्तर में ज़ूम करना चाहते थे तो त्रिज्या नक्शे के भीतर पूरी तरह से निहित नहीं होगा।

+0

+1 Yeap.The समस्या गैर निरंतर ज़ूम है –

+3

हाँ आप कुछ की आवश्यकता होगी कि आंशिक ज़ूम स्तर उदाहरण प्रदान कर सकते हैं z = 11 के बजाय आपको z = 11.5 – Alex

+0

एलेक्स की आवश्यकता होगी: ज़ूम मान पूर्णांक है, फ्लोटिंग पॉइंट नहीं ... –

3
map.setZoom(map.getZoom() + 1); 
निश्चित रूप से

यह निर्भर करता है कि कैसे अच्छा विशेष त्रिज्या फिट (मामले में यह हमेशा एक ही नहीं है)

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

उदा। एक दृश्य मंडल को चित्रित करना और उसी केंद्र बिंदु के साथ एक पारदर्शी आयत को ओप द्वारा वर्णित अनुसार कार्य करना चाहिए।

0

जून 2017 के बाद से, विधि फिटबाउंड में दूसरा पैरामीटर होता है जो पैडिंग के आकार का प्रतिनिधित्व करता है। जो लोग इसे निकालना चाहते हैं, तो आप सिर्फ उत्तीर्ण करने की आवश्यकता 0.

Map.map.fitBounds(bounds, 0); 

नई विधि हस्ताक्षर:

fitBounds(bounds:LatLngBounds|LatLngBoundsLiteral, padding?:number) 
संबंधित मुद्दे