2010-01-29 75 views
11

如何獲取OpenLayers中地圖上特定點的座標?在OpenLayers中查找點的座標

+0

您的意思是獲取用戶點擊的座標?或者在地圖上移動光標時顯示光標的座標? – amercader 2010-01-29 10:01:56

+0

是的,但我想要獲取同一地圖上以前標記的點的所有座標。可能嗎? 我正在實施犯罪製圖系統。爲此我需要該功能。謝謝。 – cuser 2010-02-03 14:48:45

+0

你以前的標記點是什麼意思?我認爲你需要更具體,描述完整的用戶交互流程,否則很難幫助你。 – mloskot 2010-02-03 17:43:56

回答

33

在地圖上處理點擊事件Click處理程序。這裏是你可以在的OpenLayers郵件列表歸檔找到manyone示例代碼:

map.events.register('click', map, handleMapClick); 

function handleMapClick(e) 
{ 
    var lonlat = map.getLonLatFromViewPortPx(e.xy); 
    // use lonlat 

    // If you are using OpenStreetMap (etc) tiles and want to convert back 
    // to gps coords add the following line :- 
    // lonlat.transform(map.projection,map.displayProjection); 

    // Longitude = lonlat.lon 
    // Latitude = lonlat.lat 
} 
+1

@mloskot應該是map.getLonLatFromViewPortPx(evt.xy);沒有? – James 2011-02-02 12:11:12

+0

不起作用,鏈接已死。 – 2016-11-08 12:37:34

+1

@HermannIngjaldsson我修復了鏈接。 – mloskot 2016-11-14 11:18:34

5
<html> 
<head> 
<script src="http://openlayers.org/api/OpenLayers.js"></script> 
<script type="text/javascript"> 
    function init(){ 
     map = new OpenLayers.Map('map'); 
     base_layer = new OpenLayers.Layer.WMS("OpenLayers WMS", 
     "http://labs.metacarta.com/wms/vmap0", {layers: 'basic'}); 
     map.addLayer(base_layer); 
     map.zoomToMaxExtent(); 
     map.events.register('click', map, handleMapClick); 
    } 

    function handleMapClick(evt) 
    { 
     var lonlat = map.getLonLatFromViewPortPx(evt.xy); 
     // use lonlat 
     alert(lonlat); 
    } 
</script> 
</head> 
<body onload="init()"> 
    Hello Map.<br /> 
<div id="map"></div> 
</body> 
</html> 

@mloskot你的回答是偉大的,你曾與EVT變量是錯誤的。

剛添加了html標記使其成爲工作頁面。