如何在Sebm谷歌地图中的DragEnd中获取多边形的路径? Angular 2

时间:2017-04-03 07:10:04

标签: google-maps angular

每当我在编辑时尝试获取新的多边形,无论是通过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>

1 个答案:

答案 0 :(得分:2)

迟到但我认为像我这样的人可能会得到一些帮助,所以加上答案。

当前版本不支持它,因此您需要对当前node_module进行一些更改。见这个网址:

https://github.com/SebastianM/angular-google-maps/pull/991

willshowell已经解释了需要做什么。

步骤:

  1. 将sebm更新为agm(截至目前的当前版本)
  2. 其次,将角度更新为至少2.3,因为它不适用于2.0。
  3. 在上面的链接中,他已将各种文件提交给分支机构。他已经做了什么,已在问题中解释过。
  4. 简短说明:他已将Array更改为MVCArray,因此您可以获取谷歌用于其地图路径的确切数据类型,添加了getPath()和getPaths()函数。我为Polygons做了同样的事情,你可以在这里下载文件,看看在DragEnd Dropbox link for files changed in @agm module
  5. 之后我需要改变什么才能获得新的多边形路径

    对节点模块进行更改后,您可以在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++; } ); }