2008-11-27 3 views
8

मैं Google मानचित्र API में भौगोलिक-स्थानों की एक एक्स राशि पास करना चाहता हूं और इसे इन स्थानों के आस-पास केंद्रित करना चाहता हूं और उपयुक्त ज़ूम स्तर सेट कर सकता हूं ताकि सभी स्थान दृश्यमान हों नक़्शे पर। अर्थात। वर्तमान में मानचित्र पर मौजूद सभी मार्कर दिखाएं।Google मानचित्र के आस-पास के केंद्रों को केंद्र में रखें और उचित रूप से ज़ूम करें

क्या यह संभव है कि Google मानचित्र API डिफ़ॉल्ट रूप से ऑफ़र करता है या क्या मुझे इसे स्वयं बनाने के लिए हल करने की आवश्यकता है?

उत्तर

3

ऐसा करने के कई तरीके हैं लेकिन यदि आप वी 2 एपीआई का उपयोग कर रहे हैं तो यह बहुत आसान है। यह post for an example, this group post या this post देखें।

+0

नोट पहले लिंक कहा गया है कि कि getBoundsZoomLevel() undocumented है - यह अब सच है। मैंने अपनी परियोजना के लिए कुछ समान रूप से कार्यान्वित किया, यह अच्छी तरह से काम करता है - सिवाय इसके कि मैं चाहता हूं कि मुझे GBounds.extend() के बारे में पता था! –

9

मैं प्रत्येक बिंदु के लिए fitBounds (एपीआई वी 3) का इस्तेमाल किया है:

  1. चर घोषित करें।

    var bounds = new google.maps.LatLngBounds(); 
    
  2. पाश

    के लिए के साथ एक मार्कर के माध्यम से जाओ
    for (i = 0; i < markers.length; i++) { 
        var latlng = new google.maps.LatLng(markers[i].lat, markers[i].lng); 
        bounds.extend(latlng); 
    } 
    
  3. अंत में

    map.fitBounds(bounds); 
    
+0

यह उदाहरण वास्तव में स्पष्ट नहीं है – Francesco

+2

@camelCase: आपके कौशल पर निर्भर करता है, ठीक उसी प्रकार +1 जो मैं देख रहा था – Moak

+0

@Moak आप ज़ूमिंग को रोकने के लिए मैप ऑब्जेक्ट में अधिकतम ज़ूम जोड़ना चाह सकते हैं! – joetsuihk

1

ग्रे की आइडिया बहुत अच्छा है लेकिन है के रूप में काम नहीं करता है कहते हैं। मैं एक zoomToMarkers API v3 के लिए एक हैक बाहर काम करने के लिए किया था:

function zoomToMarkers(map, markers) 
{ 
    if(markers[0]) // make sure at least one marker is there 
    { 
     // Get LatLng of the first marker 
     var tempmark =markers[0].getPosition(); 

     // LatLngBounds needs two LatLng objects to be constructed 
     var bounds = new google.maps.LatLngBounds(tempmark,tempmark); 

     // loop thru all markers and extend the LatLngBounds object 
     for (var i = 0; i < markers.length; i++) 
     { 
      bounds.extend(markers[i].getPosition()); 
     } 

     // Set the map viewport 
     map.fitBounds(bounds); 
    } 

} 
+0

बहुत बहुत धन्यवाद! –

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