回答
這裏是JSFiddle Demo。在Google Maps API V3中,跟蹤可拖動標記的緯度和經度非常簡單。我們以下面的HTML和CSS作爲我們的基礎。
<div id='map_canvas'></div>
<div id="current">Nothing yet...</div>
#map_canvas{
width: 400px;
height: 300px;
}
#current{
padding-top: 25px;
}
這是我們最初的JavaScript初始化谷歌地圖。我們創建一個我們想要拖動的標記,並將其可拖動屬性設置爲true。當然,要記住它應連接到你的窗口的onload事件對於要裝好了,但我會跳到代碼:
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
});
這裏我們重視兩個事件dragstart
跟蹤拖動的開始並且dragend
在標記停止拖動時放棄,我們附加的方式是使用google.maps.event.addListener
。我們在這裏做的是在標記被拖動時設置div current
的內容,然後在拖動停止時設置標記的lat和lng。 Google鼠標事件的屬性名稱爲'latlng',當事件觸發時返回'google.maps.LatLng'對象。因此,我們在這裏所做的基本上是使用此偵聽器的標識符,該標識符由google.maps.event.addListener
返回並獲取屬性latLng
以提取dragend的當前位置。一旦我們得到的緯度LNG拖動停止,我們將您的current
格中顯示時:
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);
讓我知道你對我的答案有任何疑問。
你可以撥打getPosition()
on the Marker
- 你試過嗎?
如果您使用的是JavaScript API的棄用版,您可以致電getLatLng()
on GMarker
。
您應該在標記上添加偵聽器並偵聽拖動或dragend事件,並在收到此事件時詢問事件的位置。
請參閱http://code.google.com/intl/fr/apis/maps/documentation/javascript/reference.html#Marker瞭解標記觸發的事件的描述。有關允許添加事件偵聽器的方法,請參閱http://code.google.com/intl/fr/apis/maps/documentation/javascript/reference.html#MapsEventListener。
// show the marker position //
console.log(objMarker.position.lat());
console.log(objMarker.position.lng());
// create a new point based into marker position //
var deltaLat = 1.002;
var deltaLng = -1.003;
var objPoint = new google.maps.LatLng(
parseFloat(objMarker.position.lat()) + deltaLat,
parseFloat(objMarker.position.lng()) + deltaLng
);
// now center the map using the new point //
objMap.setCenter(objPoint);
試試這個
var latlng = new google.maps.LatLng(51.4975941, -0.0803232);
var map = new google.maps.Map(document.getElementById('map'), {
center: latlng,
zoom: 11,
mapTypeId: google.maps.MapTypeId.ROADMAP
});
var marker = new google.maps.Marker({
position: latlng,
map: map,
title: 'Set lat/lon values for this property',
draggable: true
});
google.maps.event.addListener(marker, 'dragend', function (event) {
document.getElementById("latbox").value = this.getPosition().lat();
document.getElementById("lngbox").value = this.getPosition().lng();
});
感謝哥們! Pefect答案。 – 2016-10-23 15:19:57
對我來說也是完美的答案。謝謝Rolwin – 2017-11-21 14:40:32
有很多回答這個問題,這從來不是我的(包括建議爲getPosition(合作的),它似乎並不可用於標記對象的方法)。只有在地圖V3爲我工作的方法(簡單):
var lat = marker.lat();
var long = marker.lng();
我想你的意思是'marker.position.lat()'和'marker.position.lng()' – 2017-09-12 16:16:26
var lat = marker.getPosition().lat();
var lng = marker.getPosition().lng();
更多信息可以在Google Maps API - LatLng
- 1. 獲取標記的經緯度(onclick)
- 2. 獲取經緯度上標記
- 3. 從CLLocation獲取經緯度
- 4. 從json獲取經緯度
- 5. 獲取緯度和經度
- 6. 獲取經度和緯度
- 7. 從GpsMyLocationProvider獲取經度和緯度(OSMdroid)
- 8. 獲取緯度和經度從PIN碼
- 9. 從restfb獲取緯度和經度
- 10. 從TWebBrowser的GoogleMaps獲取緯度經度
- 11. 從jxmapviewer2獲取緯度經度
- 12. 從PostCode獲取經度和緯度
- 13. 獲取地標的經度和緯度值 - Google地球
- 14. 獲取經緯度從經緯度對象的Android
- 15. 從Google GeoCoder Json獲取經度和緯度? [C#]
- 16. 如何從google maps v3 api獲取經度和緯度?
- 17. 從不使用Google API的地址獲取經度和緯度
- 18. 從Google地圖獲取經度和緯度點擊事件
- 19. 從Google地方獲取經度和緯度搜索框
- 20. 通過一個穩定的標記獲取緯度,經度?
- 21. 可拖動標記gmaps.js獲取經度和緯度
- 22. 如何在google map api v2中獲取經度和緯度?
- 23. Google Maps API按經度/緯度移除標記
- 24. Google Maps API - 具有重複經度和緯度的標記
- 25. CoreLocation ::獲取經緯度座標
- 26. 獲取經緯度,Android
- 27. Geonames獲取經緯度
- 28. GMap.NET獲取經度和緯度
- 29. Android:獲取緯度和經度
- 30. 通過GPS獲取緯度和經度
這很棒!我有一個帶有自動完成地址輸入字段的地圖以及一個可拖動的標記。如果有人使用輸入字段,我還需要顯示經緯度座標。有沒有簡單的解決方案? – 2014-11-06 17:31:03
太棒了......... – 2016-09-18 11:55:39