Openlayers - 转换时获取不正确的LonLat?

时间:2013-06-26 07:21:05

标签: javascript coordinates openlayers openstreetmap

我试图获得Point的LatitudeLongitude。 但是,虽然转换它没有返回正确的LonLat。这是一个很大的数字,肯定不是lonlat点。

我尝试了一些解决方案,但没有得到结果。 还有什么可能失败?

JS Code我试过

map = createMap("deviceMap");
var fromProjection = new OpenLayers.Projection("EPSG:4326"); 
var toProjection = new OpenLayers.Projection("EPSG:900913"); 

map.events.register('click', map, function handleMapClick(e) {
          lonLat = self.map.getLonLatFromViewPortPx(e.xy).
          transform(map.getProjectionObject(), toProjection);
          prompt("",lonLat);
});

2 个答案:

答案 0 :(得分:4)

终于得到了答案

map.events.register('click', map, function handleMapClick(e) {
                var toProjection = new OpenLayers.Projection("EPSG:4326");
                var lonLat = map.getLonLatFromPixel(e.xy).
                             transform(map.getProjectionObject(), toProjection);
    });

答案 1 :(得分:2)

  • EPSG:4326
    • 应参考WGS 84,
    • 具有十进制度值
  • EPSG:900913
    • 指WGS84 Web Mercator
    • 具有度量值,它是x / y轴坐标系,因此预期“高数字”

如果我理解你的话,你应该在变量lonLat中有一个很高的数字。

OpenLayers中的“LonLat”并不意味着,它只是经度/纬度,请参阅文档here

  
      
  • lon {Number}以地图单位表示的x轴坐标。如果您的地图位于   地理投影,这将是经度。否则,它会   是地图单位中地图位置的x坐标。

  •   
  • lat {Number}以地图单位表示的y轴坐标。如果您的地图位于   地理投影,这将是纬度。否则,它会   是地图单位中地图位置的y坐标。

  •   

因此,如果您想获得真正的LonLat坐标,则不应转换它(并使用EPSG:4326)或将其转换为其他坐标系,而不是EPSG:900913。

顺便说一句,OpenLayers开始使用900918(相当于GOOGlE的数字),它由Mr. Christopher Schmidt定义,首先它不被欧洲石油调查组(EPSG)接受。然后EPSG改变了主意并给了他们号码:3857 - WGS84 Pseudo-Mercator。