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

时间:2014-03-19 11:22:18

标签: javascript leaflet projection wms

我正在尝试在传单中设置带有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);

请在我错的地方帮助我。

由于

1 个答案:

答案 0 :(得分:3)

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/