java - 除了 Android API 之外,是否有任何用于计算地理围栏违规的 API

标签 java geofencing

我想在后端计算地理围栏突破和行驶距离计算。这是我第一次使用谷歌API。我在网上找到的都是Android版的。有没有专门针对常规计算的API。

最佳答案

你可以自己实现,无需使用任何框架,非常简单...

我认为您想检查自己是否在圆形地理围栏内。

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

像这样:

    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);
}

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

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

关于java - 除了 Android API 之外,是否有任何用于计算地理围栏违规的 API,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30719757/

相关文章:

java - Constants.java 中未定义的构造函数

Nativescript 中的 Android 地理围栏。后台事件导致 java.lang.RuntimeException : Unable to instantiate receiver

jquery - 在Here API(GEO FENCING)中动态传递路线路径和栅栏路径以跟踪目标

ios - 如何防止触发多个位置通知

java - 如果您修改 ObjectDB 实体类,使用旧类设置的数据库是否支持它?

java - 如何从 ResultSet 填充 JTable?

被杀死的应用程序上的 Android 8 Geofences

javascript - 如何在 JavaScript 中围绕多段线绘制多边形?

java - 将日期和时间设置为局部变量 - Android

java - 使用 Java Mail API 从 eml 文件读取附件时出错