2012-06-14 60 views
25

我正在使用Google Maps API。我使用下面的代碼來獲取標記的座標。在Google Maps API中獲取標記的座標

var lat = homeMarker.getPosition().$a; 
var lng = homeMarker.getPosition().ab; 

一切工作正常,我使用谷歌地圖建立的應用程序。 但我今天測試了它,並且得到了正確座標的問題。只有發現上面的代碼變得未定義。在我console.log(homeMarker.getPosition())後,我發現這是現在他們用於座標的變量。

var lat = homeMarker.getPosition().ab; 
var lng = homeMarker.getPosition().cb; 

我不會問爲什麼Google地圖會這樣做,但您也可以將它包含在您的答案中。我的問題是,如何在Google地圖改變他們正在使用的變量時,在不更改我的代碼的情況下正確地獲取座標。

回答

2

還有一個備選方案

var map = new google.maps.Map(document.getElementById('map_canvas'), { 
    zoom: 1, 
    center: new google.maps.LatLng(35.137879, -82.836914), 
    mapTypeId: google.maps.MapTypeId.ROADMAP 
}); 

var myMarker = new google.maps.Marker({ 
    position: new google.maps.LatLng(47.651968, 9.478485), 
    draggable: true 
}); 

google.maps.event.addListener(myMarker, 'dragend', function (evt) { 
    document.getElementById('current').innerHTML = '<p>Marker dropped: Current Lat: ' + evt.latLng.lat().toFixed(3) + ' Current Lng: ' + evt.latLng.lng().toFixed(3) + '</p>'; 
}); 

google.maps.event.addListener(myMarker, 'dragstart', function (evt) { 
    document.getElementById('current').innerHTML = '<p>Currently dragging marker...</p>'; 
}); 

map.setCenter(myMarker.position); 
myMarker.setMap(map); 

和HTML文件

<body> 
    <section> 
     <div id='map_canvas'></div> 
     <div id="current">Nothing yet...</div> 
    </section> 
</body> 
+0

google.maps.event.addListener(myMarker, 'dragend',函數(EVT){.. }); 這會引發異常 – rajkiran

2

此外,您還可以顯示「拖」監聽器的當前位置,並將其寫入可見或隱藏字段。您可能還需要存儲縮放。這裏的複製粘貼&從工作工具:

  function map_init() { 
      var lt=48.451778; 
      var lg=31.646305; 

      var myLatlng = new google.maps.LatLng(lt,lg); 
      var mapOptions = { 
       center: new google.maps.LatLng(lt,lg), 
       zoom: 6, 
       mapTypeId: google.maps.MapTypeId.ROADMAP 
      }; 

      var map = new google.maps.Map(document.getElementById('map'),mapOptions); 
      var marker = new google.maps.Marker({ 
       position:myLatlng, 
       map:map, 
       draggable:true 
      }); 

      google.maps.event.addListener(
       marker, 
       'drag', 
       function() { 
        document.getElementById('lat1').innerHTML = marker.position.lat().toFixed(6); 
        document.getElementById('lng1').innerHTML = marker.position.lng().toFixed(6); 
        document.getElementById('zoom').innerHTML = mapObject.getZoom(); 

        // Dynamically show it somewhere if needed 
        $(".x").text(marker.position.lat().toFixed(6)); 
        $(".y").text(marker.position.lng().toFixed(6)); 
        $(".z").text(map.getZoom()); 

       } 
      );     
      }