繁体   English   中英

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

[英]Openlayers - Getting Incorrect LonLat while transform?

我试图获得一个点的LatitudeLongitude 但是,在进行转换时,它不会返回正确的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);
});

终于得到答案

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);
    });
  • EPSG:4326
    • 应该参考WGS 84,
    • 有十进制度数
  • EPSG: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伪墨卡托。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM