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}
有没有办法提高准确度?
答案 0 :(得分:3)
如果我理解正确,您首先将LatLng转换为当前地图视图中的像素位置(缩放9,无论视图端口尺寸如何)。
然后将该像素位置转换回LatLng,并注意与原始LatLng的差异。
在我看来,您只是观察像素舍入的效果:map.latLngToLayerPoint
将为您提供整数像素坐标,因此您的精度将不会比像素所覆盖的更好实际距离。
在缩放9和纽约纬度(40.687)时,对于86px,刻度约为20km,因此每像素约为230m。
您报告的2个LatLng坐标之间的距离约为103米。因此它完全在一个像素内。
现场演示:https://jsfiddle.net/3v7hd2vx/149/(结果打印在控制台中)
您可以使用地图缩放来查看精度的提高,因为每个像素将覆盖较小的距离(实际区域)。