Автоматическая настройка масштаба для размещения всего маркера на карте Google - PullRequest
39 голосов
/ 10 октября 2010

Использование последней версии карт Google.Как добавить маркеры, используя долготу и широту, и автоматически настроить уровень масштабирования карты, чтобы включить все маркеры, использующие JavaScript?

Ответы [ 2 ]

77 голосов
/ 11 октября 2010

API Карт Google v3 предоставляет объект LatLngBounds, к которому можно добавить несколько LatLng объектов.Затем вы можете передать это функции Map.fitBounds(), как описано здесь:

Частичный пример

var latlng = [
    new google.maps.LatLng(1.23, 4.56),
    new google.maps.LatLng(7.89, 1.01),
    // ...
]; 
var latlngbounds = new google.maps.LatLngBounds();
for (var i = 0; i < latlng.length; i++) {
    latlngbounds.extend(latlng[i]);
}
map.fitBounds(latlngbounds);
24 голосов
/ 10 октября 2010

Вы добавляете маркеры на свою карту Google, создавая объект marker для каждой из ваших пар широта / долгота:

var marker = new google.maps.Marker({
    position: currentLatLng, 
    map: map,
    title:"Title!"
}); 

Опция map на конструкторе маркеров свяжет новый объект рынка с вашей картой.

Чтобы увеличить масштаб карты, чтобы включить новые маркеры, вы используете метод fitBounds на объекте map . fitBounds принимает в качестве параметра объект latLngBounds . Этот объект имеет удобный метод extend , который будет корректировать границы для включения новой широты / долготы. Так что вам просто нужно прокрутить все ваши точки, вызывая extension для одного объекта latLngBounds. Это расширит границы, чтобы включить все ваши маркеры. После того, как вы это сделаете, вы передадите этот объект в метод fitBounds на карте , и он увеличится, чтобы показать все ваши новые маркеры.

...