Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/468.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何删除谷歌地图上绘制的多边形_Javascript_Angularjs_Google Maps - Fatal编程技术网

Javascript 如何删除谷歌地图上绘制的多边形

Javascript 如何删除谷歌地图上绘制的多边形,javascript,angularjs,google-maps,Javascript,Angularjs,Google Maps,我有一张地图,使用指令,我还有一个可以在地图上画形状的 我只想让我的用户在地图上画一个多边形,这是我的HTML: <div ng-controller="CreateOrderController as vm" map-lazy-load="https://maps.google.com/maps/api/js" map-lazy-load-params="{{googleMapsUrl}}"> <ng-map zoom="4" center=

我有一张地图,使用指令,我还有一个可以在地图上画形状的

我只想让我的用户在地图上画一个多边形,这是我的HTML:

<div ng-controller="CreateOrderController as vm" map-lazy-load="https://maps.google.com/maps/api/js"
         map-lazy-load-params="{{googleMapsUrl}}">
        <ng-map zoom="4" center="33.134394, 53.664248"
                map-type-id="ROADMAP">
            <drawing-manager
                    on-overlaycomplete="vm.onMapOverlayCompleted()"
                    drawing-control-options="{position: 'TOP_CENTER',drawingModes:['polygon']}"
                    drawingControl="true"
                    drawingMode="null">
            </drawing-manager>
        </ng-map>
    </div>
deletePolygon
函数返回一个错误:

未捕获类型错误:vm.map.setMap不是函数

我知道map对象不包含
setMap
函数,但说我可以使用
setMap(null)


知道如何删除/删除多边形形状吗?

overlycomplete
事件的回调函数传递一个类型为
google.maps.drawing.overlycompleteevent
的参数,该参数根据has
overlay
参数,引用新创建的对象。您需要对该对象调用
.setMap(null)
。因此,您的代码应该如下所示:

vm.onMapOverlayCompleted = function(e){
    var shapePath= e.overlay.getPath().getArray();  //This returns an array of drawn polygon cordinates

    e.overlay.setMap(null); //this will delete any created shape (polygon, polyline, etc) right after it is created. If you want to instead delete it later, just store the reference to overlay and call setMap(null) on it later.
};
试试这个,clearMap()将从地图中删除所有多边形、圆、线

        NgMap.getMap({id: 'mapId'}).then(function (map) {
            $scope.map = map;
        }).catch(function (map) {
            console.error('map error: ', map);
        });

        $scope.onMapOverlayCompleted = onMapOverlayCompleted;
       $scope.clearMap = clearMap;

       function onMapOverlayCompleted(e) {
            $scope.map = e;
       }

       function clearMap() {
            if ($scope.map.overlay) {
                $scope.map.overlay.setMap(null);
            }
        }

我在玩overlay,但当时我没有看到函数,我正在
e
object:)中寻找
setMap
函数。谢谢,回答非常好,非常有用。当我尝试时,在overlay完成后,绘制形状的绘图管理器选项消失了,但是对于已经绘制的形状没有任何更改。请您知道这个错误吗<代码>未捕获类型错误:无法读取未定义的属性“onMapOverlayCompleted”请了解此错误?未捕获的TypeError:无法读取的属性“onMapOverlayCompleted”undefined@Llg你能看一下定义的答案吗。这对你有帮助吗?谢谢我已经解决了这个问题:)你能看看这个@Llg Perfecto吗!很好,这个答案解决了你的问题好的,我会:)非常感谢你
        NgMap.getMap({id: 'mapId'}).then(function (map) {
            $scope.map = map;
        }).catch(function (map) {
            console.error('map error: ', map);
        });

        $scope.onMapOverlayCompleted = onMapOverlayCompleted;
       $scope.clearMap = clearMap;

       function onMapOverlayCompleted(e) {
            $scope.map = e;
       }

       function clearMap() {
            if ($scope.map.overlay) {
                $scope.map.overlay.setMap(null);
            }
        }