2010-12-11 98 views
0

我正在使用Google Maps v3 API爲給定城市生成一組位置。我希望地圖以所有位置的平均位置爲中心。要做到這一點,我加載所有我想在地圖上標記爲被稱爲locations和使用下面的代碼的陣列位置的經緯度對象:Google Maps API綁定錯誤

if(locations.length > 1) 
{ 
    var bounds = new google.maps.LatLngBounds(locations[0], locations[1]); 
    for(var x = 2; x < locations.length; x++) bounds.extend(locations[x]); 
    var center = bounds.getCenter(); 
} 
else var center = locations[0]; 

然而,在測試中,我用這個代碼來定義位置陣列:

var locations = []; 
locations.push(new google.maps.LatLng(50.11658, 8.68552)); 
locations.push(new google.maps.LatLng(50.10026, 8.66941)); 
locations.push(new google.maps.LatLng(50.10989, 8.68822)); 
locations.push(new google.maps.LatLng(50.11074, 8.68269)); 
locations.push(new google.maps.LatLng(50.1040552, 8.6936269)); 
locations.push(new google.maps.LatLng(50.110206, 8.6818686)); 
locations.push(new google.maps.LatLng(50.10957, 8.69077)); 

並得到了一個瘋狂的結果center。如果我刪除第一個位置(位於50.11658,8.68552),則代碼有效。如果我移動它,以便它不是推入數組的第一個位置,則代碼有效。我不知道爲什麼或如何地點會或可能產生這個錯誤!

回答

0

我相信問題是LatLngBounds的構造函數期望第一個位置是南西邊界點,第二個位置是北東邊界點。看起來你的觀點順序錯誤。

的參數是可選的,所以下面應該工作:

if(locations.length > 1) { 
    var bounds = new google.maps.LatLngBounds(); 
    for(var x = 0; x < locations.length; x++) 
     bounds.extend(locations[x]); 
    var center = bounds.getCenter(); 
}