2016-08-30 3 views
0

Ich muss Zoom von Google Maps ändern. Code:Dynamisch Zoom ändern

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; 
     } 
    } 

aber der Code:

 center: setCenterMap() 
     zoom: setMapZoom() 

, wenn ich die Methoden Center anrufen und Zoom nicht Zentrum und Zoom ändern. Wie man Mitte zentriert und dynamisch zoomt? Die Methoden werden während der Initiierung der Map ordnungsgemäß ausgeführt, wollen sich aber nach der Initialisierung nicht ändern.

Antwort

1

Die Lösung war einfach nur:

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

Google über diese Änderung kennt und arbeitet gut.