2

我试图得到Latitude一个Longitude点。但是在转换时它没有返回正确的LonLat. 这是一个很大的数字,肯定不是lonlat重点。

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

我试过的JS代码

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);
});
4

2 回答 2

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);
    });
于 2013-06-26T10:27:19.183 回答
2
  • 每股收益:4326
    • 应参考 WGS 84,
    • 有十进制度值
  • 每股收益:900913
    • 指 WGS84 Web 墨卡托
    • 具有公制值,它是 x/y 轴坐标系,因此需要“高数字”

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

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

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

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

所以如果你想得到一个真实的 LonLat 坐标,你不应该转换它(并使用 EPSG:4326)或将它转换为其他坐标系,而不是 EPSG:900913。

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

于 2013-06-26T08:59:09.797 回答