2010-12-11 21 views
0

Ich verwende die Google Maps API v3, um eine Gruppe von Standorten für eine bestimmte Stadt zu generieren. Ich möchte, dass die Karte an der durchschnittlichen Position aller Standorte zentriert wird. Um dies zu tun, ich lade LatLng Objekte aller Standorte ich auf der Karte in ein Array markieren möge genannt locations und mit dem folgenden Code:Google Maps-API-Grenzen Fehler

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]; 

jedoch in Tests, habe ich diesen Code zu definieren, die Standorte Array:

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)); 

und bekam ein verrücktes Ergebnis für center. Wenn ich den ersten Ort entferne (den bei 50.11658, 8.68552), funktioniert der Code. Wenn ich es so verschiebe, dass es nicht der erste Ort ist, der in das Array geschoben wird, funktioniert der Code. Ich habe keine Ahnung, warum oder wie dieser Ort diesen Fehler produzieren würde oder könnte!

Antwort

0

Ich glaube, das Problem ist der Konstrukteur für LatLngBounds erwartet, dass die erste Position der Süd-West-Grenzpunkt und die zweite der Nordost-Grenzpunkt sein wird. Es sieht so aus, als ob deine Punkte in der falschen Reihenfolge sind.

Die Argumente sind optional, so sollten folgende Arbeiten:

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(); 
}