Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/424.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 ngmap-绘制动态多边形_Javascript_Angularjs_Google Maps_Google Maps Api 3 - Fatal编程技术网

Javascript 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) {

我在使用ngmap绘制动态多边形时遇到问题。基本上,我有一个带有点击事件的地图,如下所示

<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 = [];
}