Получение границ полилинии в Google Maps API v3 - PullRequest
6 голосов
/ 20 июля 2010

Есть ли какие-нибудь простые способы найти ограничивающую рамку полилинии с помощью Google Maps API v3? Я работаю над проектом, в котором мне нужно обновить границы, когда данные добавляются и удаляются с карты. Это довольно просто, просто выполнив bd.extend (point), где bd - связанный объект, а point - объект LatLng. Проблема в том, что когда я начинаю удалять данные, мне бы хотелось, чтобы он изменил границы и увеличил масштаб. Есть ли встроенные функции, которые могут это сделать, или мне нужно что-то написать для себя?

Ответы [ 3 ]

10 голосов
/ 08 апреля 2016

Расширяя решение oenpelli, это расширенный метод getBounds (), который я использую для воссоздания функциональности V2 API. Это отлично работает в моем проекте.

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.

4 голосов
/ 20 июля 2010

API v2 *1002* имеет метод GPolyline.getBounds(), чтобы сделать именно это. Однако, похоже, что в v3 API .

нет эквивалентного метода.

Вы можете решить эту проблему, переопределив свойство changed вашего Polyline MVCObject, чтобы получать уведомления, когда объект меняет состояние. Затем вы можете рассчитать ограничивающую рамку, используя предложенный вами метод LatLngBounds.extend().

Я думаю, что Google преднамеренно исключил такие методы из API v3 в попытке сохранить API легким. Подобное упущение , обсуждавшееся пару дней назад при переполнении стека , было методом GMap2.clearOverlays().

2 голосов
/ 13 января 2011

Вы также можете расширить класс Polyline, добавив свой собственный метод getBounds. Обратитесь к google maps api v3: добавить точку на полилинии между двумя существующими точками на событии полилинии клика , чтобы узнать, как это сделать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...