【发布时间】:2017-05-02 23:09:00
【问题描述】:
我正在尝试使用ngmap 在我的地图上绘制多边形。地图正确显示为this 示例正在显示,但是当我完成绘制时,这就是我得到的:
ng-map.min.js:25 Uncaught TypeError: Cannot read property 'onMapOverlayCompleted' of undefined
我使用了与示例相同的代码。
我的问题:
1- 我该如何解决这个错误?
2- 如果我想让用户只绘制多边形形式,我尝试将drawingMode 的值设置为“多边形”,但我总是有其他绘制选项(圆形...)。怎么可以只画多边形?
3- 如何让用户清除绘制的多边形?
4- 是否可以检测到放置(绘制)每个点的动作。我的意思是,例如,要在多边形中画一条线,我至少需要两个点。我可以检测用户何时绘制第一个点然后第二个点并获取其坐标吗?
编辑
这是我在包含 ng-map.js 而不是 ng-map.min.js 时看到的全部错误:
Uncaught TypeError: Cannot read property 'onMapOverlayCompleted' of undefined
at index (http://localhost:8080/bower_components/ngmap/build/scripts/ng-map.js:2690:44)
at Array.reduce (native)
at Uw.<anonymous> (http://localhost:8080/bower_components/ngmap/build/scripts/ng-map.js:2691:39)
at P4._.z.trigger (https://maps.google.com/maps/api/js?key=MY_API_KEY&libraries=placeses,visualization,drawing,geometry,places:99:121)
at P4.<anonymous> (https://maps.google.com/maps/api/js?key=MY_API_KEY&libraries=placeses,visualization,drawing,geometry,places:37:81)
at C4._.z.trigger (https://maps.google.com/maps/api/js?key=MY_API_KEY&libraries=placeses,visualization,drawing,geometry,places:99:121)
at C4.<anonymous> (https://maps.google.com/maps/api/js?key=MY_API_KEY&libraries=placeses,visualization,drawing,geometry,places:37:81)
at Object._.z.trigger (https://maps.google.com/maps/api/js?key=MY_API_KEY&libraries=placeses,visualization,drawing,geometry,places:99:121)
at F4 (https://maps.google.com/maps-api-v3/api/js/28/14/drawing_impl.js:7:70)
at G4 (https://maps.google.com/maps-api-v3/api/js/28/14/drawing_impl.js:4:249)
编辑 2
我解决了第一个问题:
我的问题是我在 app.js 中使用路由。所以html 和controller 链接在其中。为了解决这个问题,我把$scope.onMapOverlayCompleted而不是
var vm = this;
vm.onMapOverlayCompleted 因为我没有在我的HTML 中写ng-controller="DrawingManagerCtrl as vm"。然后在HTML 我把on-overlaycomplete="onMapOverlayCompleted()" 和它的工作原理。
我还解决了第二个问题:
drawing-control-options="{position: 'TOP_CENTER',drawingModes:['polygon']}"
我现在想解决其他问题。
有什么帮助吗?
【问题讨论】:
-
请包含
ng-map.js以查看错误的详细信息,而不是ng-ma-.min.js。 -
@Pengyy 请看我的编辑
-
您需要分享更多代码以便我们提供帮助。尤其是包含地图的控制器和 HTML
-
现在可以使用了,谢谢。我的问题是我在 app.js 中使用路由。所以html和控制器都链接在其中。为了解决这个问题,我把
$scope.onMapOverlayCompleted而不是var vm = this; vm.onMapOverlayCompleted,因为我不写ng-controller="DrawingManagerCtrl as vm"。然后在html中我输入on-overlaycomplete="onMapOverlayCompleted()" -
@MatejP。请看我的编辑
标签: html angularjs google-maps polygon ng-map