我试图获得Point的Latitude
和Longitude
。
但是,虽然转换它没有返回正确的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);
});
答案 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)
如果我理解你的话,你应该在变量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。