2016-10-08 2 views
0

Ich habe eine Funktion in Angular, die den Mittelpunktwert für Google Maps ändert, wenn ein Benutzer auf die Karte klickt. Der korrekte Mittelwert wird dann auf den Bildschirm aufmerksam gemacht, aber der Marker ändert sich nicht so, wie er sollte.AngularJS Variable außerhalb der Funktion ändern

Webseite: http://alainwebdesign.ca/pl2/#/getLocation

Controller:

.controller('GetlocationCtrl', ['$scope', "uiGmapLogger", "uiGmapGoogleMapApi", "$state", "$stateParams", 
     function ($scope, $log, GoogleMapApi, $state, $stateParams) { 
      $log.currentLevel = $log.LEVELS.debug; 
      center = { latitude: 49.22, longitude: -122.66 }; //default center 
      alert(JSON.stringify(center)); 

      console.log($stateParams); 

      $scope.map = { 
       center: center, 
       pan: false, 
       zoom: 16, 
       refresh: false, 
       events: 
      { click: function newCenter(mapModel, eventName, originalEventArgs) 
       { 
       $scope.$apply(function(){ 
        var e = originalEventArgs[0]; 
        center = { latitude: e.latLng.lat(), longitude: e.latLng.lng() }; 
        alert(JSON.stringify(center)); 
        return center; 
       }); 
       } 
      } 

      } 

HTML partial/Ansicht:

<!--Add ability to input location as address--> 

<div style="height: 100%"> 
    <h1>TEST</h1> <!--NOT SHOWING ON PAGE WHICH MEANS THIS IS NOT BEING INVOKED WHEN 
        URL IS: '/getLocation' like it should--> 
     <ui-gmap-google-map 
         center='map.center' 
         zoom='map.zoom' 
         draggable='map.draggable' 
         dragging='map.dragging' 
         refresh='map.refresh' 
         options='map.options' 
         events='map.events' 
         pan='map.pan'> 


     <ui-gmap-marker 
     idKey='1' 
     events='map.events' 
     coords='map.center' 
     > 
     </ui-gmap-marker> 

    </ui-gmap-google-map> 

<script src='//maps.googleapis.com/maps/api/js?key=AIzaSyD4_0KuPivZyV-1EwNGmBCgLc_Z0o8Dyw8'></script> 
</div> 
+0

egal, wo ich auf der Karte Koordinaten klicken etwa gleich die ganze Zeit, um Breite: 49,2, Länge: -122,7 (als Standard-Zentrum), ist es die richtige Verhalten? – Andriy

Antwort

0

können Sie setzen direkt $ statt Zentrum scope.map.center Variable und es wird in Ordnung sein. Hier arbeitet Klickfunktion Beispiel:

click: function newCenter(mapModel, eventName, originalEventArgs) 
      { 
      $scope.$apply(function(){ 
       var e = originalEventArgs[0]; 
       $scope.map.center = { latitude: e.latLng.lat(), longitude: e.latLng.lng() }; 

      }); 
      } 
+0

Das hat funktioniert, danke – Tom

Verwandte Themen