簡體   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