LatLng из Google Maps Polygon getPath()

На основе документации Google API JavaScript API v3 функция google.maps.Polygon class getPath() возвращает MVCArray. В прямом случае путь Polygon может быть единственным массивом LatLngs, который преобразуется в тип MVCArray при передаче в функцию google.maps.Polygon class setPath().

Вышеприведенный случай - это то, с чем я имею дело в настоящее время. Я передаю массив из LatLngs и возвращаю (что я предполагаю) MVCObject, когда я вызываю getPath() в свой объект Polygon. Мой вопрос: как мне преобразовать этот MVCObject обратно в один массив из LatLngs, который формирует форму Polygon? Есть ли какие-то встроенные в Google Maps API версии 3, которые мне не хватает? Я чувствую, что должна быть какая-то очевидная встроенная функция преобразования или что-то в API, которая ускользает от меня.

Любая помощь будет оценена.

Ответ 1

Когда вы вызываете Polygon.getPath() api-doc, возвращается MVCArray api-doc экземпляров LatLng, которые представляют первый путь Polygon. Вы можете напрямую перейти к членам MVCAarray двумя способами:

  • Вызов MVCAarray.getArray, который вернет базовый JavaScript Array, содержащий LatLng членов.
  • Используйте MVCArray.getAt( index ), который вернет все, что есть в этом индексе в MVCArray (a LatLng в этом случае). Это дает вам возможность настроить цикл JavaScript for для итерации элементов массива.

Вы также можете косвенно работать с членами MVCArray с помощью функции forEach(callback:function(*, number)). В этом случае вы должны передать функцию обратного вызова, которая принимает два параметра:

  • Действительный элемент элемента MVCArray.
  • Индекс массива, в котором находится этот элемент.

Ответ 2

    var polygonBounds = polygon.getPath();
    var bounds = [];
    for (var i = 0; i < polygonBounds.length; i++) {
          var point = {
            lat: polygonBounds.getAt(i).lat(),
            lng: polygonBounds.getAt(i).lng()
          };
          bounds.push(point);
     }