【问题标题】:set map center in leaflet with 3857 lat/lon在传单中设置地图中心,3857 纬度/经度
【发布时间】:2014-04-25 14:28:08
【问题描述】:

我正在尝试在传单中使用 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);

请帮助我哪里错了。

谢谢

【问题讨论】:

    标签: javascript leaflet projection wms


    【解决方案1】:

    Leaflet 的 API 使用 lat/lng 进行所有操作,因此您在调用 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)
    • 我不想使用像 Proj4js 这样的额外库。
    猜你喜欢
    • 1970-01-01
    • 2014-03-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-17
    • 1970-01-01
    相关资源
    最近更新 更多