来自OpenLayers的球形墨卡托Lat / Lon,想要EPSG:4326格式

时间:2016-01-20 05:20:28

标签: javascript openlayers openmap

我试图从OpenLayer获得EPSG:4236格式的经度和纬度,但是我花了几个小时试图解决这个问题而且我真的不知道我做错了什么。我一直在使用球形墨卡托格式。

对于设置,我有以下内容:

var map = new OpenLayers.Map("mapdiv");
map.addLayer(new OpenLayers.Layer.OSM());
var markers = new OpenLayers.Layer.Markers( "Markers" );
map.addLayer(markers);

这是我的地图中心:

  var lonLatCenter =  new OpenLayers.LonLat( -73.0,  40.5 )
      .transform(
        new OpenLayers.Projection("EPSG:4326"), 
        map.getProjectionObject()
  );

  var zoom=14;

对于点击事件,我有以下代码:

map.events.register("click", map, function(e) {
            var position = map.getLonLatFromPixel(e.xy);
            alert(JSON.stringify(position));
});

点击纽约市的JFK机场时,我得到以下结果:

{"lon":-8215245.2836805,"lat":4960351.5608374}

我一直在这里阅读信息,但它似乎只展示了如何从EPSG:4326转换为球形墨卡托。将不胜感激,以下链接指向文档:

http://docs.openlayers.org/library/spherical_mercator.html

1 个答案:

答案 0 :(得分:1)

使用地图投影(shperical mercator)在地图对象返回坐标上单击事件。 您需要将它们转换为lat lon,就像这样

map.events.register("click", map, function(e) {
            var position = map.getLonLatFromPixel(e.xy);
            position.transform(map.getProjectionObject(), new OpenLayers.Projection('EPSG:4326'));
            alert(JSON.stringify(position));
});