Это возможно.getPaths()
доступно, если тип фигуры polygon
.Причина, по которой вы получаете ошибку, заключается в том, что thisShape
( из вашего примера кода ) возвращают 2 объекта, таких как type
и overlay
.Чтобы правильно использовать getPaths()
, вы должны сначала наложить наложение, так как пути могут быть найдены внутри этого объекта.код должен выглядеть примерно так:
thisShape.overlay.getPaths();
Однако для таких фигур, как круг и прямоугольник, getPath()
не будет работать, поскольку вы не наносили точки на фигуру.Это указано в самой документации Circles
В отличие от Polygon, вы не определяете пути для Circle.Вместо этого у круга есть два дополнительных свойства, которые определяют его форму
center
определяет google.maps.LatLng центра круга. radius
указывает радиускруга, в метрах.
и в документации Прямоугольники
В отличие от многоугольника, вы не определяете пути дляПрямоугольник.Вместо этого у прямоугольника есть свойство bounds
, которое определяет его форму путем указания google.maps.LatLngBounds для прямоугольника.
Чтобы получить доступ к этой информации из возврата после overlaycomplete
обратного вызова, используя вашкоды в качестве примера, вот как:
google.maps.event.addListener(drawingManager, 'overlaycomplete', function(thisShape) {
Для кругов вы можете использовать только getCenter()
и getRadius()
.
if (thisShape.type == 'circle') {
console.log("center: " + thisShape.overlay.getCenter());
console.log("radius: " + thisShape.overlay.getRadius());
и для прямоугольника getBounds()
.( В любом случае, если вы не знаете, как извлечь данные из этого, вы можете использовать getNorthEast()
и getSouthWest()
. )
}else if(thisShape.type == 'rectangle'){
bounds = thisShape.overlay.getBounds();
console.log("north east: " + bounds.getNorthEast());
console.log("south west: " + bounds.getSouthWest());
Теперь для последней части, чтобы получить доступ к latLngs
после завершения формы, просто используйте getPaths()
.Затем, чтобы получить точки внутри этого объекта, я просто нацелился на массив, в котором можно найти массив latLngs
:
}else if(thisShape.type == 'polygon'){
console.log("lat lngs: " + thisShape.overlay.getPaths());
console.log(thisShape.overlay.getPaths().b[0].b);
}
});
Хотя эта информация не дает точной области формы, она даетдостаточно информации, чтобы воссоздать их в том же месте на карте.
Вы можете проверить этот рабочий образец .Просто попробуйте добавить фигуры и увидеть результаты в консоли.
Надеюсь, это помогло !!