2014-02-25 95 views
1

我正在AngularJS上工作。我試圖根據選定的經度和緯度顯示Google地圖。所以我按照下面的步驟,如何通過經度和緯度谷歌地圖direcive in angularjs

1中,包括谷歌地圖腳本

<script src="https://maps.googleapis.com/maps/api/js?sensor=false" type="text/javascript"></script> 

2,寫的angularJS指令對谷歌地圖

.directive('map', function() { 
    return { 
     restrict: 'E', 
     replace: true, 
     template: '<div></div>', 
     link: function(scope, element, attrs) { 
      var markersArray = []; 
      var myOptions = { 
       zoom: 14, 
       center: new google.maps.LatLng(attrs.glat,attrs.glang), 
       mapTypeId: google.maps.MapTypeId.ROADMAP 
      }; 
      var map = new google.maps.Map(document.getElementById(attrs.id), myOptions); 

      google.maps.event.addListener(map, 'click', function(e) { 
       scope.$apply(function() { 
        addMarker({ 
        lat: e.latLng.lat(), 
        lng: e.latLng.lng() 
        }); 

        console.log(e); 
       }); 

      }); // end click listener 

      addMarker= function(pos){ 
      for (var i = 0; i < markersArray.length; i++) { 
    markersArray[i].setMap(null); 
    } 
    markersArray.length = 0; 
       //map.clearOverlays(); 
       //alert(pos.lat);alert(pos.lng); 
       var myLatlng = new google.maps.LatLng(pos.lat,pos.lng); 
       marker = new google.maps.Marker({ 
        position: myLatlng, 
        map: map, 
        title:"Hello World!" 
       }); 
       scope.pinLatLang={"lat":pos.lat,"lang":pos.lng}; 
       scope.$apply(); 
       markersArray.push(marker); 
google.maps.event.addListener(marker,"click",function(){}); 
      } //end addMarker 
     } 
    }; 
}) 

3,寫下面的標記,

<map id="map_canvas" glat="33.6408" glang="-84.4457" class="col-md-10"></map> 

當我喜歡它上面,它工作正常。但在我的情況,我需要調用Web服務,並得到經度和緯度一樣,

$http({ 
        method: 'GET', 
        url: "myUrl" + $routeParams.param1, 

       }).success(function (data, status, headers, config) { 
        //Here i will set scope variables 
    $scope.GLongitude=data.Longitude; 
    $scope.GLatitude=data.Latitude; 
    }); 

,並用我的指令元素標記這些範圍的變量,比如

<map id="map_canvas" glat="{{GLongitude}}" glang="{{GLatitude}}" class="col-md-10"></map> 

,但沒有加載地圖,我認爲當指令創建標記時,範圍變量尚未初始化。我怎樣才能做到這一點。請指導我。

回答

0

嘗試使用Google Maps for AngularJS - AngularJS指令將Google地圖集成到您的應用程序中。

對於大多數廣泛使用的Google地圖對象有指示,包括標記,窗口,線條和形狀。

實施例:

<google-map center='{expression}' 
zoom='{expression}' 
draggable='{string}' 
dragging='{expression}' 
refresh='{expression}' 
options='{expression}' 
events='{expression}' 
bounds='{expression}'> 

<!-- other directives here --> 
</google-map> 
相關問題