我正在制作一个花园规划应用程序。我想使用卫星图像作为背景,因此选择了 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);
和屏幕截图
这是否表明我应该使用不同的工具来绘制这些小尺寸,或者有没有办法解决这个问题?
最佳答案
这是自#2345以来圆到椭圆的大地测量近似的副作用。 ,和浮点运算。在内部,Leaflet 取消投影并重新投影圆的中心和最高点,以计算椭圆的长宽比,并且在执行如此小的半径和不平凡的数学的情况下,代码达到了 floating-point numbers 的精度限制。 。您看到的错误实际上是舍入错误。
实现此目的的唯一方法是使用更接近(投影)坐标原点的(投影)坐标。考虑使用自定义(本地)CRS对于这个任务。
关于javascript - 我可以避免在 Leaflet 中高缩放级别时出现扭曲的圆圈吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65066556/