javascript - Google Maps Circle Overlay 和 Vincenty Formula

标签 javascript google-maps geospatial computational-geometry

我使用 Circle 叠加层作为 Google Maps Javascript API V3 的一部分(即,见下文 - 我们有一个实际设置半径等的后续调用)在我们的应用程序中显示 goe-spatial 位置。

   var circle = new google.maps.Circle({
      fillColor: lCircleColor,
      strokeWeight: 2
    });

我们还有一个后台服务器进程,它计算点与圆心的距离,以确定点是落在圆内还是圆外 - 当点落入圆内时,我们会发出警报。最近有一个特殊情况,其中一个点 (lat=31.197163, lon=-83.87292) 正好落在圆的边界上 (lat=31.1998, lon=-83.8738, radius=1000ft)。

当使用 Haversine 公式计算距离时,计算出的距离大于半径,而 Vincenty(更准确)距离小于半径,从而导致后端进程生成该点落入的警报位置。

我的问题与 Google map 如何显示圆叠加层有关。当我们在我们的应用程序中查看它时,它似乎正好落在圆圈之外(只有在放大到最大程度时才可见)。我在别处读到,为了计算距离,Google 的 API 使用 Vincenty 算法,但为了显示它们的叠加层,它们是否假设为球形(因此也许可以解释为什么该点似乎落在圆圈之外)?

最佳答案

当在非常大的距离上使用 Google map 距离计算器时,例如对于彼此相距 9000 公里的两个点,结果大约比 Vincenty 公式给出的正确答案高出 2.4‰ (2.4/1000)。 谷歌直到现在(2020 年 7 月)都无法实现 Vincenty 的公式,这有点奇怪。

关于javascript - Google Maps Circle Overlay 和 Vincenty Formula,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3934460/

相关文章:

javascript - $tds.attr ('disabled' ,'disabled' );没有达到我想要的效果

javascript - 使用 kefirjs 将数据传递给 React 组件

python - Shapefile 到 2D 网格作为稀疏矩阵

r - 如何计算R中的土地覆盖面积

lucene.net - Umbraco:存储空间数据

javascript - 动态加载 JavaScript 文件

javascript - 使用导入和导出的 Babel.js 不起作用

javascript - 基于路线的中心 map

javascript - 鼠标悬停在 Google map 中的 KMLLayer 上的手形光标

google-maps - 谷歌有地理 IP 服务吗?