在Leaflet中以3857纬度/经度设置地图中心

7

我正在尝试在leaflet中使用3857投影的纬度/经度设置地图中心。

如果使用4326投影的纬度/经度,则可以正常工作。

var map = L.map('map', {
        crs: L.CRS.EPSG3857
    }).setView([51.40457186188496, -2.3741738081973844], 13);

如果我提供3857纬度/经度,则它不起作用。

var map = L.map('map', {
            crs: L.CRS.EPSG3857
        }).setView([6693172.2381477, -264291.81938326], 13);

请帮我找出我的错误。

谢谢

1个回答

3
Leaflet的API在所有操作中使用经纬度,因此在调用Leaflet时永远不应该使用投影坐标。
如果您有投影坐标(严格来说不是经纬度),则可以通过取消投影将它们转换为经纬度。由于当前稳定版本的Leaflet对EPSG:3857的定义略有不同,因此您需要将坐标除以EPSG:3857的球半径。此外,您的坐标似乎已经交换了x和y。无论如何,以下是执行转换的代码:
function toLatLng(x, y, map) { var projected = L.point(y, x).divideBy(6378137); return map.options.crs.projection.unproject(projected); }
像这样调用它:
var latLng = toLatLng(6693172.2381477, -264291.81938326, myMap);
您也可以使用Proj4js等库进行投影/反投影:http://proj4js.org/

是的,你说得对,首先我需要取消投影点。但是你提到的方法并没有正确地取消投影点。例如(纬度:-90,经度:383490520.79999435)。 - ARsl
我不想使用额外的库,如Proj4js。 - ARsl

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