在一个单一的经纬度坐标周围创建一个半径来创建“到达区”.因此脚本知道车辆何时到达位置

Creating a radius around a singular lat/lon co-ordinate to create "arrival zone" so script knows when vehicle arrives at location

本文关键字:创建 一个 脚本 何时 位置 坐标 经纬度 单一 周围 达区 到达区      更新时间:2023-09-26

现在是早上7点,我已经想了几个小时了,所以如果我没有解释清楚,请原谅我,但它是这样的:

我正在研究一个项目,该项目在数据库中存储位置列表(经度/纬度),然后在gmap上填充所述位置。现在我要做的是当被GPS追踪的车辆到达指定地点时触发一个功能。问题是,由于GPS的性质,位置可能会偏离几米,可能不会触发功能。我该如何在这些地点周围创建一个半径,作为一种"误差范围"或"缓冲区",一旦履带式车辆进入,它就会触发该功能?

我通过postgres将位置和gps坐标存储为字符串,并使用js进行查询。我知道我可能忘记了一些重要的信息,你们可能会用它来帮助我,但正如我提到的,我超级累了,所以我想任何关于如何正确地问这个问题的帮助也是受欢迎的!

如果不知道谷歌地图的内部工作,我会这样做(如果你有很多目的地,它可能不会那么快…)

var location = getGpsLocation();
//fill this array with your fetched destinations
var destinations = [{lat:34.356,lng:3.456},....];
//the amount of meters within a destination that is considered "arriving"
var arrivalRadius = 10;
var arrived = false;
destinations.forEach(function(destination){
    var distanceToLocation = calculateDistance(location, destination);
    if(distanceToLocation - arrivalRadius <= 0){
        arrived = true;
    }
});

要计算两点之间的距离(lat/lng),可以使用haversine方法。

你需要在每次你的位置改变时重复这个,这就是为什么我说如果你使用很多目的地,它会花费很多时间。