我在使用ngmap绘制动态多边形时遇到问题。基本上我有一个点击事件的地图如下
<map center="<% latitude %>, <% longitude %>" zoom="2" on-click="placeMarker()">
和“placeMarker”方法在我的控制器内。现在,以下代码将正确地将标记放置在地图上,并在放置第4个标记时将其转换为多边形...
$scope.placeMarker = function(e)
{
var marker = new google.maps.Marker({position: e.latLng, map: $scope.map});
$scope.coordinates.push( [Number(e.latLng.J),Number(e.latLng.M)] );
if( $scope.coordinates.length == 4 )
{
$scope.createPolygon();
}
}
$scope.createPolygon = function()
{
$scope.GoogleMap.polygons.push( $scope.coordinates );
$scope.coordinates = [];
}
...但是当我尝试重构代码以在用户点击第一个标记时构建多边形时,他们没有发生任何事情。触发事件监听器,逻辑显示正常但多边形永远不会出现
$scope.placeMarker = function(e)
{
var marker = new google.maps.Marker({position: e.latLng, map: $scope.map});
$scope.coordinates.push( [Number(e.latLng.J),Number(e.latLng.M)] );
if( $scope.coordinates.length == 1 )
{
google.maps.event.addListener(marker, 'click', function () {
$scope.createPolygon();
});
}
}
$scope.createPolygon = function()
{
$scope.GoogleMap.polygons.push( $scope.coordinates );
$scope.coordinates = [];
}
我确信这可能是我的通用JS知识的限制。这让我很难过。请问有人可以提供建议吗?