当前位置: 首页 > 面试题库 >

除了Android API之外,是否还有其他用于计算Geofence违规的API

孟乐逸
2023-03-14
问题内容

我想在后端计算地理围栏违规和行车距离计算。这是我第一次使用google
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);
}

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

我也在博客上描述了它:

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

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



 类似资料:
  • 有没有可能通过JSONPath知道其他“路径”的存在? 我所说的现有“路径”是指类似于此JSON的“a.b.c”或“a.b.d”形式的字符串: 可以写一个JSONPath来判断除了a. b. c和a. b. d之外是否还有其他“路径”吗? 例如,在下面的JSON中,它应该发现有属性'e':

  • lambda表达式除了保存代码行之外还有其他用途吗? lambdas提供了什么特殊功能来解决那些不容易解决的问题吗?我见过的典型用法是: 我们可以使用一个lambda表达式来缩短代码:

  • 问题内容: 我正在研究部分应用程序的使用情况,但是我只能找到有关使用专有sun实现或Oracle特定实现的信息。 sun的实现不受支持,并且可能会发生变化。如果将来我想将其部署到非Sun虚拟机上,使用此方法也可能会导致问题,最后,它在构建日志中留下了无法抑制的警告,可以掩盖其他警告。 我是否可以与我的应用程序一起部署一个开源替代实现,该实现在多个数据库之间都能很好地工作?至少支持MySQL的东西。

  • 问题内容: 所以可以说我有这个界面: 我有一个实现它的类: 如果我想使用接口IBox,则无法以这种方式实际创建它的实例: 对?所以我实际上必须这样做: 如果是这样,那么接口的唯一目的是确保实现接口的类中具有接口所描述的正确方法?还是接口还有其他用途? 问题答案: 接口是使代码更灵活的一种方法。你要做的是: 然后,稍后,如果你决定要使用其他类型的框(也许还有另一个库,其中框的类型更好),则将代码切换

  • 问题内容: 我在Windows 7上使用VirtualBox 5.0.6安装了Docker工具箱1.8.3。 在 Docker Quickstart Terminal 启动期间创建的 默认 虚拟机为定义了一个共享文件夹。是否可以将其他共享文件夹永久添加到该虚拟机,例如在主机上安装驱动器? __ 问题答案: 该boot2docker自述中提到 另外,Boot2Docker包括内置的VirtualBo

  • 其中包含已处于的所有状态。 假设我们想查询最新状态名称为“new”的所有项目。我提出的Sql查询是: 在上面描述的场景中,为了得到所需的结果,对子查询进行排序还有什么替代方法?