在 Polygon 上使用 addListener 使用 AngularJs NgMap 删除顶点

Usin addListener on Polygon to delete vertex with AngularJs NgMap

我正在尝试使用 AngularJs NgMap 删除地图上绘制的多边形上的单个顶点,但没有任何反应。我知道我需要在多边形上绑定一个 rightClick 事件,但什么也没有发生。

我知道有关于如何 delete the vertex here 的指南,但我无法触发事件进行。

到目前为止,这是我的代码:

html:

<ng-map center="[{{vm.googleMaps}}]" zoom="13" map-type-control="false" street-view-control="false">
    <marker position="[{{vm.googleMaps}}]"></marker>

    <shape name="polygon" paths="{{vm.paths}}" editable="true"
        stroke-color="#cde"
        stroke-opacity="0.8"
        stroke-weight="2"
        fill-color="#cde"
        fill-opacity="0.4">
    </shape>
</ng-map>

控制器:

$scope.$on('mapInitialized', function(event, map) {
    var polygon = new google.maps.Polygon({
        paths: vm.polygonPath
    });

    google.maps.event.addListener(polygon, 'rightclick', function() {
        console.log('RightClick')
    });
});

当我左键单击“多边形”顶点时,没有任何反应,但我能够完全编辑多边形。

我做错了什么?

为了在不使用 mapInitialized 的情况下获得正确的事件,我必须在 ng-map 指令中设置自定义侦听器并从那里传递事件。

之后,我可以在不使用 google.maps.event.addListener 的情况下使用 googleMaps 功能。

这是最终代码:

html

<ng-map center="[{{vm.googleMaps}}]" zoom="13" map-type-control="false" street-view-control="false">
    <marker position="[{{vm.googleMaps}}]"></marker>

    <shape name="polygon" paths="{{vm.paths}}" editable="true"
        on-rightclick="vm.myFunction($event)" //This is where we get the event with the point reference
        stroke-color="#cde"
        stroke-opacity="0.8"
        stroke-weight="2"
        fill-color="#cde"
        fill-opacity="0.4">
    </shape>
</ng-map>

AngularJs

我不需要使用我在问题上使用的代码,所以我们可以删除它。

vm.myFunction = function(event) {
    NgMap.getMap().then(function(evtMap) {
        var path = evtMap.shapes[0].getPath();
        return path.removeAt(event.vertex);
    });
}

与 GoogleMaps 示例的唯一区别是,这种方式将立即删除点,没有小框。