1

我有一个简单的谷歌地图。我在给定的 lat, lng 添加了一个标记。

我想使用 turf.js 计算一个 1km 的缓冲区,然后我可以将其显示为 Google Maps 多边形。

turf.buffer() 返回的路径是一个椭圆。从标记到边界的距离在纬度上是正确的。然而,它的纵向距离不足1公里。投影似乎有问题,但是 Google Maps API 和 turf.js 文档都表明 WGS84 是默认投影。

在此处输入图像描述

最终游戏是使用 turf.js 来缓冲点、折线和多边形,所以不幸的是,我不能只画一个谷歌地图圆圈作为解决方法。我会考虑迁移到 Leaflet,但是我们已经在开发 Google Maps API 方面投入了大量资金

我在这里创建了一个显示问题 的 htm 文件

4

1 回答 1

1

我不会发疯的。缓冲区不是测地线,所以在赤道你会得到一个圆形缓冲区,当你向北或向南移动时,你的缓冲区会纵向向两极挤压。turf.js 团队很清楚。有关详细信息,请参阅https://github.com/Turfjs/turf/issues/110

我正在考虑使用clipper.js。这是一个笛卡尔图书馆(2d)所以在英国我可以使用osgbeastings和northings。我还必须翻转南北,因为 Clipper 假设我们正在处理标准图形,即 y 轴像 css 中一样反转,左上角为 0,0。

我打算使用geotools 在osgb 和wgs 之间进行转换。

于 2015-07-04T20:09:56.960 回答