[英]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.