ARs*_*Rsl 5 javascript projection wms leaflet
我正试图在传单中设置带有3857投影的lat/lon的地图中心.通过使用投影4326的lat/lon,其工作正常.
var map = L.map('map', {
crs: L.CRS.EPSG3857
}).setView([51.40457186188496, -2.3741738081973844], 13);
Run Code Online (Sandbox Code Playgroud)
但如果我提供3857纬度/经度,则无法正常工作.
var map = L.map('map', {
crs: L.CRS.EPSG3857
}).setView([6693172.2381477, -264291.81938326], 13);
Run Code Online (Sandbox Code Playgroud)
我帮我错了.
谢谢
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/