小叶测量转换的精确性

时间:2016-11-08 17:22:10

标签: javascript leaflet

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}

有没有办法提高准确度?

1 个答案:

答案 0 :(得分:3)

如果我理解正确,您首先将LatLng转换为当前地图视图中的像素位置(缩放9,无论视图端口尺寸如何)。

然后将该像素位置转换回LatLng,并注意与原始LatLng的差异。

在我看来,您只是观察像素舍入的效果:map.latLngToLayerPoint将为您提供整数像素坐标,因此您的精度将不会比像素所覆盖的更好实际距离。

在缩放9和纽约纬度(40.687)时,对于86px,刻度约为20km,因此每像素约为230m。

您报告的2个LatLng坐标之间的距离约为103米。因此它完全在一个像素内。

现场演示:https://jsfiddle.net/3v7hd2vx/149/(结果打印在控制台中)

您可以使用地图缩放来查看精度的提高,因为每个像素将覆盖较小的距离(实际区域)。