map.layerPointToLatLng(map.latLngToLayerPoint(L.latLng(40.687, -73.9035)))
结果
{lat: 40.686886382151116, lng: -73.90228271484375}
不精确性似乎过高,尤其是经度。
map.getZoom()
结果
9
map.getSize()
结果
{x: 1335, y: 430}
有没有办法提高精确度?
最佳答案
如果我理解正确,您首先将 LatLng 转换为当前 map View 上的像素位置(缩放 9,无论视口(viewport)尺寸如何)。
然后,您将该像素位置转换回 LatLng,并注意到与原始 LatLng 的差异。
在我看来,您只是观察像素舍入的效果:map.latLngToLayerPoint
将为您提供整数像素坐标,因此您的精度不会比像素覆盖的实际距离更好。
在变焦 9 和纽约纬度 (40.687) 时,86 像素的比例约为 20 公里,因此每像素约为 230 m。
您报告的 2 个 LatLng 坐标之间的距离约为 103m。因此它完全在单个像素内。
现场演示:https://jsfiddle.net/3v7hd2vx/149/ (结果打印在控制台中)
您可以使用 map 缩放来查看精度的提高,因为每个像素将覆盖更小的距离(实际上是区域)。
关于javascript - 传单测量转换的精确度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40492903/