每当我在编辑时尝试获取新的多边形,无论是通过dragend还是click,我总是得到变量的初始路径。
我使用:
初始化我的路径变量paths: Array<LatLngLiteral> = [{lat: -12.052224, lng: -77.050342}, {lat: -12.064306, lng: -77.031790}, {lat: -12.075951, lng: -77.054554}, {lat: -12.063236, lng: -77.072506}, {lat: -12.052224, lng: -77.050342}];
永远不要更新路径变量。
我失败了什么?为什么我无法获得具有相应路径的最终多边形并始终获得初始?或者获取新多边形的正确方法是什么?
这是我的组成部分:
<sebm-google-map [latitude]="lat" [longitude]="lng" [zoom]="zoom">
<sebm-map-polygon [paths]="paths" [editable]="true" [polyDraggable]="true" [strokeColor]="'#c60331'" (polyDragEnd)="onDragEnd($event, paths)">
</sebm-map-polygon>
</sebm-google-map>
答案 0 :(得分:2)
迟到但我认为像我这样的人可能会得到一些帮助,所以加上答案。
当前版本不支持它,因此您需要对当前node_module进行一些更改。见这个网址:
https://github.com/SebastianM/angular-google-maps/pull/991
willshowell已经解释了需要做什么。
步骤:
对节点模块进行更改后,您可以在PolyGon的鼠标注册事件中使用以下代码:
@ViewChildren(AgmPolygon)
polygonData: QueryList<AgmPolygon>;
polyMouseUp($event: any, index:number, polygon: any) {
var i =0;
this.polygonData.forEach(
x =>{
if(i==index){
x.getPath().then((y: any[]) => {
console.log('-');
y.forEach(z => console.log(z.lat(), z.lng()));
});
}
i++;
}
);
}