2010-12-11 6 views
0

Я использую API Google Maps v3 для создания группы местоположений для данного города. Я хочу, чтобы карта загружалась с центром в среднем положении всех местоположений. Чтобы сделать это, я загружаю LatLng объекты всех мест, которые я хочу отметить на карте в массив с именем locations и используя следующий код:Ошибка API API Карт Google

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