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);
}