Angular Google Maps空闲事件会多次触发

时间:2016-06-10 10:00:33

标签: angularjs angular-google-maps

我正在使用angular-google-maps v-2.3.3。我正在使用“markers”指令加载标记,并使用map“idle”事件进行某些操作。我的问题是,每当用户放大或缩小或平移地图时,“空闲”事件将根据边界内的标记数量多次触发。例如:如果有40个标记,则空闲事件被调用40次而不是一次。下面是我设置空闲事件的代码。

angular.extend(vm, {
        map: {
            center: { latitude: 47, longitude: 2 },
            markersControl: {},
            mapControl: {},
            events: {
                tilesloaded: function(map) {
                    $scope.$apply(function() {
                        vm.mapInstance = map;
                    });

                    var map = vm.map.mapControl.getGMap();

                    $timeout(function() {
                        google.maps.event.trigger(map, 'resize');
                    }, 100);

                },
                dragend: dragend,
                idle: function() {
                    try {
                        var markers = vm.map.markersControl.getGMarkers();
                        var map = vm.map.mapControl.getGMap();
                        for (var i = 0; i < markers.length; i++) {
                            if (map.getBounds().contains(markers[i].getPosition())) {
                                markers[i].setVisible(true);
                            } else {
                                markers[i].setVisible(false);
                            }
                        }

                    } catch (err) {
                        // Handle error(s) here
                    }
                }
            },
            window: {

                closeClick: function() {
                    var markers = vm.map.markersControl.getGMarkers();
                    markers.forEach(function(v, i) {
                        v.setAnimation(null);
                    });
                }
            }
        }
    });

0 个答案:

没有答案