javascript - 传单测量转换的精确度

标签 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}

有没有办法提高精确度?

最佳答案

如果我理解正确,您首先将 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/

相关文章:

javascript - 变量超出精确选择 - Javascript/Ajax

javascript - 如何仅在 fullpage.js 中禁用鼠标滚动触发器

AngularJS 从 GeoJSON 响应获取坐标

javascript - 传单 map 上的固定图像

javascript - 从图 block 服务器返回的 map 不完整,缩放级别可用的图 block 数量比文档指示的要多

javascript - 可滚动表格不显眼的脚本

javascript - 如何将此脚本更改为 OnMouseOver?

javascript - Lo-Dash,数组和集合的区别

r - 防止缩小传单 R-Map?

r - 将生成的多边形网格绘制到传单上的问题