标记点击事件的性能很差

时间:2014-10-08 09:56:15

标签: angularjs-google-maps

我对标记上的点击事件的性能有疑问。

这是我的地图视图:

<div class="map-wrapper">
    <map center="{{mapCenter}}" street-view-control="false" zoom-control="false" map-type-control="false" zoom="14">
        <marker position="{{place.coords}}" title="{{place.name}}" icon="{{place.icon}}" ng-repeat="place in places" on-click="select(place.id)"></marker>
    </map>
</div>

这是一个调用相同功能的按钮(相同的视图和控制器):

<button ng-click="select(null, 13)">My test button</button>

这是我的功能:

$scope.select = function(event, placeId) {
  $log.debug('select called');
  $location.path('/places/' + placeId);
};

当我点击按钮时,会出现console.log并立即发生位置更改。当我单击标记时,console.log立即出现,但位置更改最多需要5秒。

知道这是怎么回事吗?

2 个答案:

答案 0 :(得分:0)

尽量避免ng-repeat使用ui-gmap-markers,而是使用点击参数连接你的处理程序。

答案 1 :(得分:0)

在我的情况下,在超时函数中调用$ scope上的$ digest()就可以了:

$timeout(function () {
    $scope.$digest();
});