在OpenLayers中查找点的坐标

11

如何在 OpenLayers 中获取地图上特定点的坐标?


你是指获取用户点击的点的坐标吗?还是在移动光标时显示地图上的坐标? - amercader
是的,但我想在同一张地图上获取之前标记点的所有坐标。这可能吗? 我正在实现一个犯罪地图系统。为此,我需要该功能。谢谢。 - cuser
你所说的“之前标记的点”是什么意思?我认为你需要更具体地描述完整的用户交互流程,否则将很难帮助你。 - mloskot
2个回答

33

处理地图上的点击事件 Click 处理程序。这里是您可以在 OpenLayers 邮件列表存档中找到的 许多 示例代码之一:链接

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

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标记。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接