Получение границ полилинии в Google Maps API v3
Есть ли простые способы найти ограничивающую рамку полилинии с помощью Google Maps API v3? Я работаю над проектом, где мне нужно обновить границы по мере добавления и удаления данных с карты. Это довольно легко, просто делая bd.extend(точка), где bd-Связанный объект, а point-объект LatLng. Проблема в том, что когда я начинаю удалять данные, я бы хотел, чтобы они изменили границы и увеличили масштаб. Есть ли встроенные функции, которые могут это сделать, или мне нужно будет что-то написать для я сам?
3 ответа:
API v2 имел
GPolyline.getBounds()
метод, чтобы сделать именно это. Однако оказывается, что в V3 API нет эквивалентного метода.Возможно, вы захотите справиться с этим, переопределив
changed
собственность вашегоPolyline
MVCObject
для того, чтобы получать уведомления, когда объект меняет состояние. Затем вы можете вычислить ограничивающую рамку, используяLatLngBounds.extend()
метод, который вы предложили.Я думаю, что Google намеренно опустил такие методы из API v3 в попытайтесь сохранить API легким. Аналогичное упущение , обсуждавшееся пару дней назад в Stack Overflow , было следующим:
GMap2.clearOverlays()
метод.
Расширяя решение oenpelli, это расширенный метод getBounds (), который я использую для воссоздания функциональности из API V2. Это прекрасно работает в моем проекте.
google.maps.Polyline.prototype.getBounds = function() { var bounds = new google.maps.LatLngBounds(); this.getPath().forEach(function(item, index) { bounds.extend(new google.maps.LatLng(item.lat(), item.lng())); }); return bounds; };
Просто помните, что это должно быть добавлено после загрузки API javascript, поэтому в вашем методе init.
Вы также можете расширить класс Polyline, чтобы добавить свой собственный метод getBounds. Обратитесь к карты Google API для В3: добавить точку на полилинии между двумя существующими точками на кнопку полилинии событие, как это сделать.