2

我有以下代码,但问题是,如果移动地图,指向地址的大头针不固定,大头针保持在相同的位置,而不是停留在它被固定的位置。

控制器

$scope.map = {
                        center: {
                            latitude: location.lat,
                            longitude: location.long
                        },
                        zoom: 17,
                        formattedAddress: location.formatted_address
                    }

看法

<ui-gmap-google-map
                class="col-md-12"
                center="map.center"
                zoom="map.zoom"
                ng-cloak>
            <ui-gmap-marker coords="map.center" idkey="1" ng-cloak>
                <ui-gmap-window>
                    <p>{{map.formattedAddress}}</p>
                </ui-gmap-window>
            </ui-gmap-marker>

        </ui-gmap-google-map>
4

2 回答 2

10

标记设置在地图的中心

<ui-gmap-marker coords="map.center" idkey="1" ng-cloak>

当您创建地图时,不要使地图中心和标记坐标相同的对象引用也很重要。

var coords = {lat: x, lng : x}
map.center = coords
marker.coords = coords

因为这也会使标记移动。利用

marker.coords = Object.create(coords)
于 2015-06-01T11:37:30.773 回答
2

我有一个类似的问题,地图绑定到 1 个坐标属性,地图的中心位置。然后我有一个我想放置在同一位置的标记。

当您移动地图时,绑定的 'ui-gmap-google-map center="map.center"' 属性发生了变化,并且标记也​​绑定到了同一个 map.center 属性,因此它也随之移动。

我通过有两个单独的坐标对象来解决它。一个用于初始地图​​中心,一个用于标记。然后拖动一个不会影响另一个。

(在我的情况下,我希望您可以省略 'ui-gmap-google-map center="map.center"' 并仅依靠标记的 'fit' 属性来巧妙地适应所有标记,而无需关心居中位置地图。认为有一种方法可以使用 'bounds' 属性,但会有点循环遍历所有标记并找出左上角到右下角最大的纬度/经度边界)。

于 2015-04-21T05:02:41.987 回答