2012-04-22 20 views
52

मेरे पास यह कोड है जो एक नक्शा प्रस्तुत करता है।Google मानचित्र API V3 विधि fitBounds()

enter image description here

मैं एक उच्च स्तर ज़ूम प्रस्तुत करना चाहते हैं जबकि:

function initialize() { 
    var myOptions = { 
     center: new google.maps.LatLng(45.4555729, 9.169236), 
     zoom: 13, 
     mapTypeId: google.maps.MapTypeId.ROADMAP, 

panControl: true, 
mapTypeControl: false, 
panControlOptions: { 
      position: google.maps.ControlPosition.RIGHT_CENTER 
     }, 
zoomControl: true, 
zoomControlOptions: { 
    style: google.maps.ZoomControlStyle.LARGE, 
    position: google.maps.ControlPosition.RIGHT_CENTER 
}, 
scaleControl: false, 
streetViewControl: false, 
streetViewControlOptions: { 
    position: google.maps.ControlPosition.RIGHT_CENTER 
      } 
     }; 
    var map = new google.maps.Map(document.getElementById("mapCanvas"), 
     myOptions); 



var Item_1 = new google.maps.LatLng(45.5983128 ,8.9172776); 

var myPlace = new google.maps.LatLng(45.4555729, 9.169236); 

var marker = new google.maps.Marker({ 
    position: Item_1, 
    map: map}); 

var marker = new google.maps.Marker({ 
    position: myPlace, 
    map: map}); 

var bounds = new google.maps.LatLngBounds(myPlace, Item_1); 
map.fitBounds(bounds); 

    } 

यहां तक ​​कि अगर दो अंक 25 किमी से अलग होती है मैं इस परिणाम मिलता है।

इस

enter image description here

मैं अपने समर्थन के लिए विधि fitBounds()

var bounds = new google.maps.LatLngBounds(myPlace, Item_1); 
    map.fitBounds(bounds); 

धन्यवाद का उपयोग जैसा

उत्तर

119

यह इसलिए होता है क्योंकि LatLngBounds() दो मनमाना अंक के रूप में नहीं ले करता है पैरामीटर, लेकिन एसडब्ल्यू और एनई अंक

आपत्ति http://jsfiddle.net/gaby/22qte/

29

LatLngBounds पर

var bounds = new google.maps.LatLngBounds(); 
bounds.extend(myPlace); 
bounds.extend(Item_1); 
map.fitBounds(bounds); 

डेमो (दक्षिण-पश्चिम, उत्तर-पूर्व) क्रम में अंकों के साथ परिभाषित किया जाना चाहिए एक खाली सीमा पर .extend() विधि का उपयोग करें। आपके अंक उस क्रम में नहीं हैं।

सामान्य ठीक है, खासकर यदि आप नहीं जानते कि अंक निश्चित रूप से उस क्रम में हो जाएगा, एक खाली सीमा का विस्तार करने के लिए है:

var bounds = new google.maps.LatLngBounds(); 
bounds.extend(myPlace); 
bounds.extend(Item_1); 
map.fitBounds(bounds); 

एपीआई सीमा सुलझा होगा।

+7

हां! बस इसे पीटा। आईपैड कीबोर्ड तेजी से टाइपिंग आसान नहीं बनाते हैं। –

18

मुझे वही समस्या है जिसका आप वर्णन करते हैं हालांकि मैं ऊपर बताए अनुसार मेरे लैट्लिंगबाउंड का निर्माण कर रहा हूं।

google.maps.event.addListenerOnce(map, 'idle', function() { 
    map.fitBounds(markerBounds); 
}); 
+1

धन्यवाद, यह मेरे लिए एक बड़ी मदद थी क्योंकि मैं कोरों को जियोकोडिंग पते था, और उसके बाद उन तारों पर मैपिंग कर रहा था, लेकिन यह – andrewtweber

+0

पर काम नहीं कर रहा था। मुझे कॉल करने के दौरान अभी तक प्रदर्शित नहीं होने वाले HTML के कारण एक ही समस्या आई है 'फिटबाउंड्स()', तो स्पष्ट रूप से ज़ूमिंग स्वयं को समझ नहीं सका। यह सुनिश्चित करना कि ज़ूम करने की कोशिश करने से पहले मानचित्र को पहले प्रदर्शित किया गया था, इससे मेरी मदद मिली। – stevo

+1

ह्यूज सहायता, इस उत्तर के लिए धन्यवाद –

6
var map = new google.maps.Map(document.getElementById("map"),{ 
       mapTypeId: google.maps.MapTypeId.ROADMAP 

      }); 
var bounds = new google.maps.LatLngBounds(); 

for (i = 0; i < locations.length; i++){ 
     marker = new google.maps.Marker({ 
      position: new google.maps.LatLng(locations[i][1], locations[i][2]), 
      map: map 
     }); 
bounds.extend(marker.position); 
} 
map.fitBounds(bounds); 
: समस्या यह है कि चीजों को async कर रहे हैं और प्र में सबसे अच्छा तरीका है मैंने पाया इस तरह एक निष्क्रिय हैंडलर में कॉल करने के लिए है की तरह गलत समय पर map.fitBounds() बुला एक परिणाम के साथ छोड़ सकता है
+2

कूल यह मेरे लिए काम करता है। धन्यवाद @MAMASSi –

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