map.layerPointToLatLng(map.latLngToLayerPoint(L.latLng(40.687, -73.9035)))
结果是
{纬度:40.686886382151116,经度:-73.90228271484375}
不精确性似乎高得不合理,尤其是经度。
map.getZoom()
结果是
9
map.getSize()
结果是
{x:1335,y:430}
有没有办法提高精确度?
如果我理解正确的话,您首先将 LatLng 转换为当前地图视图上的像素位置(缩放 9,无论视口尺寸如何)。
然后,您将该像素位置转换回 LatLng,并注意到与原始 LatLng 的差异。
在我看来,您只是观察像素舍入的效果:map.latLngToLayerPoint http://leafletjs.com/reference-1.0.0.html#map-latlngtolayerpoint会给你integer像素坐标,因此您的精度不会比像素所覆盖的实际距离更好。
在变焦 9 和纽约纬度 (40.687) 下,86px 的比例约为 20km,因此每个像素约为 230m。
您报告的 2 个 LatLng 坐标之间的距离约为 103m。因此它完全在单个像素内。
现场演示:https://jsfiddle.net/3v7hd2vx/149/ https://jsfiddle.net/3v7hd2vx/149/(结果打印在控制台中)
您可以使用地图缩放来查看精度的提高,因为每个像素将覆盖更小的距离(实际上是区域)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)