javascript - 我可以避免在 Leaflet 中高缩放级别时出现扭曲的圆圈吗?

标签 javascript leaflet

我正在制作一个花园规划应用程序。我想使用卫星图像作为背景,因此选择了 Leaflet。现在,我想绘制出各个植物的位置,并在每个植物周围画出圆圈,以显示建议的种植半径。与 Leaflet 显示的典型特征相比,这些圆圈非常小,半径约为 0.1m 甚至更小。我发现圆圈在这些小尺寸下会呈现扭曲,并且扭曲的方向随着圆圈的位置而变化。这是一个 fiddle :

https://jsfiddle.net/d2ncr6vq/1/

L.circle([-33.865002, 151.2094], {radius: 0.1}).addTo(map);
L.circle([-33.865004, 151.2094], {radius: 0.1}).addTo(map);
L.circle([-33.865006, 151.2094], {radius: 0.1}).addTo(map);
L.circle([-33.865008, 151.2094], {radius: 0.1}).addTo(map);

和屏幕截图

nested circles, smallest distorted

这是否表明我应该使用不同的工具来绘制这些小尺寸,或者有没有办法解决这个问题?

最佳答案

这是自#2345以来圆到椭圆的大地测量近似的副作用。 ,和浮点运算。在内部,Leaflet 取消投影并重新投影圆的中心和最高点,以计算椭圆的长宽比,并且在执行如此小的半径和不平凡的数学的情况下,代码达到了 floating-point numbers 的精度限制。 。您看到的错误实际上是舍入错误。

实现此目的的唯一方法是使用更接近(投影)坐标原点的(投影)坐标。考虑使用自定义(本地)CRS对于这个任务。

关于javascript - 我可以避免在 Leaflet 中高缩放级别时出现扭曲的圆圈吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65066556/

相关文章:

javascript - 如何在node.js中从客户端接收POST表单数据

javascript - 如何使用 puppeteer 从 iframe 标签中抓取日期

javascript - 性能警告Processing.js

html5-canvas - 是否可以将 Openstreets map (传单)保存为图像

javascript - mapbox - 如何设置要素图层的弹出选项

javascript - Angular 和 Leaflet 在点击时添加标记并获取 Coord

javascript - 如何在浏览器中运行javascript代码

javascript - joint.setTheme 不是 JointJS-Rappid 中的函数

leaflet - 如何在单击覆盖层的单选按钮时更改缩放系数和中心位置

r - 如何使用 R 在传单上绘制多边形?