2010-12-11 6 views
0

J'utilise l'API Google Maps v3 pour générer un groupe d'emplacements pour une ville donnée. Je veux que la carte soit centrée sur la position moyenne de tous les emplacements. Pour ce faire, je charger des objets LatLng de tous les endroits que je veux marquer sur la carte dans un tableau appelé locations et en utilisant le code suivant:Erreur liée à l'API Google Maps

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

Cependant, dans les essais, j'ai utilisé ce code pour définir le tableau des emplacements:

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

et a obtenu un résultat fou pour center. Si je supprime le premier emplacement (celui à 50.11658, 8.68552), le code fonctionne. Si je le déplace de sorte que ce ne soit pas le premier emplacement poussé dans le tableau, le code fonctionne. Je n'ai aucune idée pourquoi ou comment cet emplacement pourrait ou pourrait produire cette erreur!

Répondre

0

Je crois que le problème est que le constructeur de LatLngBounds s'attend à ce que la première position soit le point de délimitation sud-ouest et la seconde à être le point de délimitation nord-est. Il semble que vos points sont dans le mauvais ordre.

Les arguments sont facultatifs, donc les éléments suivants devraient fonctionner:

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