3

我正在使用Google Maps for AngularJS并拥有以下 Jade 代码:

#map_canvas
  google-map(center='map.center', zoom='map.zoom', draggable='true', options='options', events='map.events')
     marker(coords='marker.coords', options='marker.options', idkey='marker.id')

在我的角度控制器中,我有:

$scope.map = {center: {latitude: 42.2405, longitude: -8.7207 }, zoom: 12, events: {
        click: function (map, eventName, args) {
            $scope.marker.coords.latitude = args[0].latLng.lat();
            $scope.marker.coords.longitude = args[0].latLng.lng();
            console.log($scope.marker);
        }
    }
    }

$scope.marker = {
        id: 0,
        coords: {
            latitude: 42.2405, longitude: -8.7207
        },
        options: { draggable: true }
    }

我正在尝试每次点击更新标记位置。在console.log($scope.marker);我可以看到我的标记确实打印了更新的坐标值,但红色的大头针没有在地图上移动。

我无法弄清楚我做错了什么。

编辑:

在我调整地图大小后,标记确实会移动到新位置,所以我认为这是一个问题,当标记位置发生变化时地图没有刷新。这应该报告为错误吗?我能做些什么来解决它?

4

1 回答 1

3

最后!在这里这里阅读了一些关于 $apply() 的内容并找到了像它提到的这样的解决方案之后:

将您的回调正文包装到$scope.$apply(function () { ... });. 请记住,您的事件来自“非 Angular”世界。

我发现了另一个帖子,它只是添加$scope.$apply();到点击功能的末尾。

最后一个解决方案是唯一对我有用的解决方案。我已经发布了所有过程,因为我认为了解 $apply() 很有趣。

于 2014-09-10T11:57:01.287 回答