移动地图时,是否有更好的方法可以避免角度贴图重新定位我的地图标记?

时间:2016-07-12 23:12:50

标签: angularjs google-maps angular-ui

所以我使用(真棒)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;它的价值。它有效,但......它很有意思。必须有一个更好的方法!

1 个答案:

答案 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>