除了 Android API 之外,还有其他用于计算地理围栏违规的 API

Posted

技术标签:

【中文标题】除了 Android API 之外,还有其他用于计算地理围栏违规的 API【英文标题】:Is there any API for calculating Geofence breach other than Android API's 【发布时间】:2015-08-23 13:06:09 【问题描述】:

我想在后端计算地理围栏突破和行驶距离计算。这是我第一次使用谷歌 API。我在网上找到的所有内容都是针对 android 的。是否有任何特定于常规计算的 API。

【问题讨论】:

你的问题有点含糊。您想要一个服务器端应用程序来检测设备是否超出地理围栏? 是的。那是正确的。我会得到纬度、纬度的位置,并以此为基础计算距离。我想知道这个人是否在地理围栏中,以及我将根据它更新我的数据库。 【参考方案1】:

你可以自己实现,不用任何框架,很简单...

我假设您想检查您是否在圆形地理围栏内。

为此,只需计算圆心与您所在位置(经度、纬度)之间的距离。如果距离小于您的圆半径,则您在地理围栏内,否则您在地理围栏外。

像这样:

    boolean checkInside(Circle circle, double longitude, double latitude) 
        return calculateDistance(
            circle.getLongitude(), circle.getLatitude(), longitude, latitude
        ) < circle.getRadius();

要计算两点之间的距离,可以这样:

double calculateDistance(
  double longitude1, double latitude1, 
  double longitude2, double latitude2) 
    double c = 
        Math.sin(Math.toRadians(latitude1)) *
        Math.sin(Math.toRadians(latitude2)) +
            Math.cos(Math.toRadians(latitude1)) *
            Math.cos(Math.toRadians(latitude2)) *
            Math.cos(Math.toRadians(longitude2) - 
                Math.toRadians(longitude1));
    c = c > 0 ? Math.min(1, c) : Math.max(-1, c);
    return 3959 * 1.609 * 1000 * Math.acos(c);

这个公式称为Haversine 公式。 它考虑了地球的曲率。 结果以米为单位。

我也在我的博客上描述过:

用于检查地理围栏圈(它还描述了两点之间的距离计算): http://stefanbangels.blogspot.be/2014/03/point-geo-fencing-sample-code.html

用于检查地理围栏多边形: http://stefanbangels.blogspot.be/2013/10/geo-fencing-sample-code.html

【讨论】:

嗨!欢迎。实际上不推荐仅链接的答案。考虑从答案中的链接发布足够的信息以使答案独立(不依赖于链接),或者将链接发布为对问题的评论(一旦获得 50 声望,您就可以这样做) 谢谢 :-) 我在答案中添加了一个示例。

以上是关于除了 Android API 之外,还有其他用于计算地理围栏违规的 API的主要内容,如果未能解决你的问题,请参考以下文章

Android:除了 Location.getAltitude() 之外,还有其他方法可以获取高度吗? (我听说过使用传感器)

除了适配器之外,还有其他方法可以将数据实现到活动中吗?

除了 FxCop 之外,.net 中的代码分析还有其他选择吗?

除了按位与之外还有其他用途吗[重复]

除了使用Elasticsearch恢复API以外,还有其他方法可以恢复Elasticsearch快照吗?

除了android中的活动之外,还有啥是调用网络类的好方法?