java web应用程序中的地理围栏

时间:2014-01-22 11:48:46

标签: java web-services google-maps geofencing

我正在编写与地理围栏相关的服务器端Java应用程序。

  • 我的商店有纬度,经度和半径
  • 我也有人的当前位置(就纬度和经度而言)。

如果他到达地理围栏内,即在商店的半径范围内,我必须发出警报。我用Google搜索解决方案&有一些识别人的方法是在围栏内(圆圈)或围栏外。

  1. 计算商店纬度,经度和人的当前纬度之间的距离&amp;经度,如果Distance < radius,那么人就在篱笆外面的栅栏内。
  2. 使用多边形地理围栏
  3. 任何人都可以建议我从上面采用哪种方法。

    提前致谢

4 个答案:

答案 0 :(得分:1)

这取决于您的需求。如果你想知道一个人是否在商店半径1公里范围内,那么你需要一个圆圈搜索。这里,商店的位置是枢轴。您可以根据需要更改半径。

当您需要搜索特定区域的人时,无论距离任何地方的距离多远,都会使用多边形搜索。巴黎,纽约或伊斯坦布尔地区的人们,而不是商店半径1公里范围内的人。

答案 1 :(得分:1)

在你的情况下,只需要半径(即到商店的距离),我肯定会选择半径搜索(你的第一个命题)。

我认为,Polygon Geofencing正在使用Ray-Casting Algrithm迭代多边形的每个片段。这将花费更多时间,并且可能导致在圆圈的情况下进行一些近似(取决于算法的应用方式)。

答案 2 :(得分:0)

我原本以为在这里使用的最佳方法是半径距离计算,假设您需要知道距离'如乌鸦飞'可以这么说。所以地理距离而不是旅行距离。这将是最高效和最简单的实现。可用示例herehere

如果后者是这种情况(我希望它不是这样),那么我想你需要使用多边形地理围栏或Google distance Matrix API

答案 3 :(得分:0)

感谢您的所有答案。在我的项目中,我已经集成了两种方法(Polygon&amp; Distance)。如果用户进入多边形,他将收到通知,并且像半径一样。我已将多边形坐标和半径存储到我的数据库中。