将点转换为纬度和经度

23
我想知道如何获取地图点击事件的坐标并将其转换为经纬度。
这是我的代码:
map.on('click', function(evt) {
    var element = popup.getElement();
    var coordinate = evt.coordinate;

    var latLon = ol.proj.transform(coordinate, 'EPSG:3857', 'EPSG:4326');

    $(element).popover('destroy');
    popup.setPosition(coordinate);

通常,坐标值会给我一个数组等等:[48654.02545, 3265468.45455]

但我需要纬度和经度等:([39,54876,32,547821])

摘要:我需要将EPSG:3857坐标转换为EPSG:4326坐标(纬度/经度)

有什么想法吗?



map.getEventCoordinate(evt) 是什么意思? - Thibaut
@Thibaut,它给了我类似于这样的东西[3648595.2737768563,4850925.944188948],但是我的计算基于纬度和经度。 - gokhangokce
1个回答

49

如果您的地图视图投影是Web墨卡托(EPSG:3857),它是默认设置,则以下内容应该有效:

map.on('click', function(evt) {
  var lonlat = ol.proj.transform(evt.coordinate, 'EPSG:3857', 'EPSG:4326');
  var lon = lonlat[0];
  var lat = lonlat[1];
  // …
});

我解决了这个问题,但是你的解决方案更专业。我认为问题是由Android的LogCat引起的,因为我无法看到数组的值。 - gokhangokce
1
这个解决方案只适用于evt.coordinate,对于图标对象不起作用。例如:var geometry = feature.getGeometry(); var coord = geometry.getCoordinates(); var lonlat = ol.proj.transform(coord, 'EPSG:3857', 'EPSG:4326'); var lon = lonlat[0]; var lat = lonlat[1];返回的经纬度是:0.000026949458523585642 - 0.000053898917059314044。 - gokhangokce
1
你需要提供一个完整的示例。 - erilem
只是提醒一下,还有一个名为ol.proj.toLonLat的函数可以帮我们完成这个任务:[链接]https://openlayers.org/en/latest/apidoc/module-ol_proj.html#.toLonLat 但请记住,此方法仅适用于默认投影代码,并且仅在OpenLayers 6.6.1中有效。 - Leroy Meijer

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接