繁体   English   中英

在传单中设置地图中心,3857纬度/经度

[英]set map center in leaflet with 3857 lat/lon

我正试图在传单中设置带有3857投影的lat / lon的地图中心。 通过使用投影4326的lat / lon,其工作正常。

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

我帮我错了。

谢谢

Leaflet的API使用lat / lng进行所有操作,因此在调用Leaflet时不应使用投影坐标。

如果您有投影坐标,严格来说不是纬度和经度 ,您可以通过取消投影将它们转换为lat / lng。 由于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/

暂无
暂无

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

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