gpt4 book ai didi

javascript - 尝试使用 EPSG :3857 in Leaflet

转载 作者:行者123 更新时间:2023-11-28 17:38:47 24 4
gpt4 key购买 nike

我正在尝试使传单使用 EPSG:3857 作为输入坐标系。我使用 porj4leaflet 来实现这一点。我已经像这样定义了我的 map 实例:

var map = L.map('map', {
center: [8378860.13, 1481133.311008498],
zoom: 7,
crs: new L.Proj.CRS(
'EPSG:3857',
'+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs',
{
resolutions: [
8192, 4096, 2048, 1024, 512, 256, 128
],
origin: [0, 0]
}
)
});

当我尝试运行它时,我得到TypeError:坐标必须是有限数字。您可以在这里看到整个 fiddle :https://jsfiddle.net/asdpinspdai/fckbpq0a/

根据我从文档中了解到的内容,像这样设置 crs 应该允许我以 EPSG:3857 格式将坐标传递给传单。我错过了什么吗?

这里的任何帮助都非常非常感谢。谢谢

最佳答案

“有限数”错误是因为L.Map期望中心坐标在-90到90和-180到180度的范围内。

在您的 jsfiddle 中,您还遇到了选择 zoom:11 的问题,但 CRS 定义中只有 7 个可用的缩放级别。

Leaflet API 始终使用 WGS84 纬度/经度坐标(以度为单位),因此以这种方式使用 Proj4leaflet 不会达到您想要的效果。看这个explanation from the Proj4Leaflet project .

但是,EPSG:3857 已经是 Leaflet 中的默认 CRS,您可以使用其内置方法在米和 WGS84 度之间进行转换,而无需 Proj4Leaflet 或 Proj4js。请参阅Leaflet CRS documentation .

const proj = L.CRS.EPSG3857;

// Degrees to metres
proj.project(new L.LatLng(51,-2)); // {x: -222638.98158654, y: 6621293.722740}

// Metres to degrees
proj.unproject(new L.Point(-222600, 6621000)); // {lat: 50.998339473, lng: -1.99964982245}

每当您需要将仪表坐标传递给 Leaflet 时,将仪表坐标取消投影到 WGS 可能是最简单的方法,但您也可以编写某些 Leaflet 函数的重写版本。这些将采用米坐标,将它们转换为度数,然后将它们传递给原始函数。

关于javascript - 尝试使用 EPSG :3857 in Leaflet,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48462280/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com