我正在使用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);
,我可以看到我的标记会打印更新的坐标值,但红色图钉不会在地图上移动。
我无法弄清楚我做错了什么。
编辑:
在我调整地图大小后,标记会移动到新位置,因此我认为当标记位置发生变化时,地图不会刷新。这应该报告为错误吗?我能做些什么来解决它?
答案 0 :(得分:3)
最后!在$ apply()here和here上阅读了一下后,找到了this one之类的解决方案,提到了:
将您的回调主体包装到
$scope.$apply(function () { ... });
。记得 你的活动来自“非角色”世界。
我找到了this other post,只是将$scope.$apply();
添加到点击功能的末尾。
最后一个解决方案是唯一一个为我工作的解决方案。 我已经发布了所有流程,因为我觉得有趣的是了解$ apply()。