动态改变缩放

Dynamically change zoom

我需要更改 Google 地图的缩放比例。代码:

    function _initMap(vm) {
        vm.windowOptions = {
            show: false
        };

        var latSum = 0;
        var longSum = 0;
        for (var i = 0, length = vm.markers.length; i < length; i++) {
            //calculate center of map (1st part)
            latSum += vm.markers[i].coords.latitude;
            longSum += vm.markers[i].coords.longitude;
            //assign an icon
            vm.markers[i].iconUrl = getIconUrl(vm.markers[i].deviceType);
        }
        var centeredLatitude = latSum / vm.markers.length;
        var centeredLongitude = longSum / vm.markers.length;

        vm.control = {};

        vm.map = {
            center: setCenterMap(),
            options: getMapOptions(),
            zoom: setMapZoom(),
            events: {
                click: function (mapModel, eventName, originalEventArgs) {
                    var e = originalEventArgs[0];
                    $log.log('gz', e.latLng.lat() + '   ' + e.latLng.lng());
                    console.log('xxx', mapModel);
                }
            },
            show: true,
            refresh: function (a, b, c, d) {
                vm.map.control.refresh();

            }
        };

        vm.clusterOptions = {
            minimumClusterSize: 2,
            zoomOnClick: true,
            styles: [{
                url: 'assets/images/markers/m1.png',
                width: 53,
                height: 53,
                textColor: 'white',
                textSize: 17,
                fontFamily: 'Open Sans'
            }],
            averageCenter: true,
            clusterClass: 'cluster-icon'
        };

        vm.window = {
            location: undefined,
            templateUrl: 'app/components/maps/maps.info.template.html',
            show: false,
            options: getMapWindowOptions()
        };

        vm.clickMarker = function (marker, event, object) {
            vm.window.show = false;
            vm.window.details = object.details;
            vm.window.location = object.coords;
            vm.window.show = true;
            vm.sendChoosenDeviceToController(object);
            angular.element('#right-menu').focus();
        };

        vm.closeClick = function () {
            vm.window.show = false;
        }
    }

但是代码:

        center: setCenterMap()
        zoom: setMapZoom()

当我调用 center 和 zoom 方法时,center 和 zoom 没有改变。如何动态更新中心和缩放?这些方法在地图启动期间正确执行,但初始化后不想更改。

解决方案很简单:

scope.map.center = {
     'latitude': scope.markers[i].coords.latitude,
     'longitude': scope.markers[i].coords.longitude
};

GoogleMaps 了解这一变化并且运行良好。