标记不会更新Google Maps for AngularJS中的坐标

时间:2014-09-10 07:58:53

标签: angularjs google-maps angular-google-maps

我正在使用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);,我可以看到我的标记会打印更新的坐标值,但红色图钉不会在地图上移动。

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

编辑:

在我调整地图大小后,标记会移动到新位置,因此我认为当标记位置发生变化时,地图不会刷新。这应该报告为错误吗?我能做些什么来解决它?

1 个答案:

答案 0 :(得分:3)

最后!在$ apply()herehere上阅读了一下后,找到了this one之类的解决方案,提到了:

  

将您的回调主体包装到$scope.$apply(function () { ... });。记得   你的活动来自“非角色”世界。

我找到了this other post,只是将$scope.$apply();添加到点击功能的末尾。

最后一个解决方案是唯一一个为我工作的解决方案。 我已经发布了所有流程,因为我觉得有趣的是了解$ apply()。