Javascript ngmap-绘制动态多边形
我在使用ngmap绘制动态多边形时遇到问题。基本上,我有一个带有点击事件的地图,如下所示Javascript ngmap-绘制动态多边形,javascript,angularjs,google-maps,google-maps-api-3,Javascript,Angularjs,Google Maps,Google Maps Api 3,我在使用ngmap绘制动态多边形时遇到问题。基本上,我有一个带有点击事件的地图,如下所示 <map center="<% latitude %>, <% longitude %>" zoom="2" on-click="placeMarker()"> 。。。但是,当我试图重构代码以构建多边形时,当用户再次单击第一个标记时,没有发生任何事情。事件侦听器启动,逻辑显示正常,但多边形从未显示 $scope.placeMarker = function(e) {
<map center="<% latitude %>, <% longitude %>" zoom="2" on-click="placeMarker()">
。。。但是,当我试图重构代码以构建多边形时,当用户再次单击第一个标记时,没有发生任何事情。事件侦听器启动,逻辑显示正常,但多边形从未显示
$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知识的一个局限。这把我难住了。有人能提供建议吗?
$scope.coordinates.length==1
-第二个示例中是打字错误吗?您好,感谢您抽出时间。不,我不这么认为。我正在将一个事件侦听器附加到第一个标记。您知道,当您单击标记时,您的$scope.coordinates
将充满[Number(e.latLng.J)、Number(e.latLng.M)]
对吗?如果您希望它只有一个坐标,它就不会像$scope那样工作。坐标包含一系列纬度和经度。准备好后,我将$scope.coordinates数组推到$scope.polygons数组上,该数组具有与google地图的双向数据绑定。第一个例子很有效,所以我认为原则上是可以的(?)第一个和第二个代码段的行为完全不同,你能编辑你的问题并写出你对第二个代码段的期望吗。如果我有你的问题,那会帮助我理解。
$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 = [];
}