Ошибка в Google Maps API - PullRequest
       25

Ошибка в Google Maps API

0 голосов
/ 11 декабря 2010

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

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), код работает. Если я переместу его так, чтобы это не первое местоположение, помещенное в массив, код работает. Я понятия не имею, почему или как это местоположение могло или могло вызвать эту ошибку!

1 Ответ

0 голосов
/ 11 декабря 2010

Я полагаю, что проблема в том, что конструктор для 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();
}
...