所以我使用(真棒)angular-ui:angular-google-maps来显示地图。必须由以前的编码器修复一些东西,但主要是它非常棒。
我遇到了一个令我恼火的问题,因为似乎解决方案应该很容易 - 这个不能成为一个不寻常的用例!
我有一个对象。它的大多数数据结构都是无关紧要的,但它附带了地理定位。所以当我设置地图时(为了简洁起见,跳过一些事情......
<ui-gmap-google-map center='ctrl.object.location'>
<ui-gmap-marker coords ='ctrl.object.location'>
</uigmap-marker>
</ui-gmap-google-map>
一切看起来都很棒。然后,当我尝试移动地图时......当地图移动时,标记会停留在中心。 Angular Google Maps正在更新地图移动时的对象坐标。因此,标记自然会移动到 - 它们既是同一对象的引用,也不是副本。
要修复&#39;这个,我写了一个小函数,如果可能的话,返回一个缓存的值,如果对象没有那个第二个,那么只返回一个新的值,缓存&#39;它的价值。它有效,但......它很有意思。必须有一个更好的方法!
答案 0 :(得分:1)
问题是您正在为地图中心和标记使用相同的对象参考。
因此,当您拖动地图时,内部会将对象的坐标更新为中心,但它也会用作标记,因此标记位于中心
只为center
this.mapCenter = angular.copy(this.object.location);
查看
<ui-gmap-google-map center='ctrl.mapCenter'>
<ui-gmap-marker coords ='ctrl.object.location'>
</uigmap-marker>
</ui-gmap-google-map>