如何计算两个GPS坐标之间的距离(使用纬度和经度)?
我正在寻找位于路线边界内的地方.我想按照距路线的距离顺序返回结果.
我尝试rankby=distance了我的附近搜索请求,但它不起作用,因为它需要一个位置和半径,而我有一个LatLngBounds对象和一个路由.这甚至可能吗?
这是我的脚本沿着边界内的路线返回的位置.
它以随机顺序返回结果...
注意:目标是使用边界而不是位置.
我对此有点陌生。我最近准备将数学方程转换为代码。所以我开始练习简单的公式,例如斐波那契数和半正矢公式。
\n\n但我对以下参考文献中的半正弦代码有点困惑;
\n\n\n\n一般来说,他们所做的是,
\n\nvar R = 6371e3; // metres\nvar \xcf\x861 = lat1.toRadians();\nvar \xcf\x862 = lat2.toRadians();\nvar \xce\x94\xcf\x86 = (lat2-lat1).toRadians();\nvar \xce\x94\xce\xbb = (lon2-lon1).toRadians();\n\nvar a = Math.sin(\xce\x94\xcf\x86/2) * Math.sin(\xce\x94\xcf\x86/2) +\n Math.cos(\xcf\x861) * Math.cos(\xcf\x862) *\n Math.sin(\xce\x94\xce\xbb/2) * Math.sin(\xce\x94\xce\xbb/2);\nvar c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1-a));\n\nvar d = R * c;\nRun Code Online (Sandbox Code Playgroud)\n\n我从这里得到了原始半正矢公式的参考。
\n\n然后,注意这一行,
\n\nvar c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1-a));\nRun Code Online (Sandbox Code Playgroud)\n\n它的哪一部分来自维基百科中的原始半正矢公式?我在这些图表上根本没有找到任何切线。我在这里错过了什么吗?任何建议表示赞赏。
\n我正在尝试找到有人正在使用我的应用程序的正确建筑物。现在我已经设法进行了相当糟糕的过滤,我需要改进它。
我的目标是通过过滤将最近的建筑物返回给使用该应用程序的人,因此在同一建筑物中移动时尽可能好地过滤它,而不会产生错误。
我的 fetch 返回一个 api JSON 数组,如下所示:
{
"data": [
{
"id": 1,
"city": "CITY",
"building_name": "Building 1",
"building_address": "Address 123",
"latitude": "57.7052809",
"longitude": "16.9367817"
},
{
"id": 2,
"city": "CITY",
"building_name": "Building 2",
"building_address": "Address 456",
"latitude": "35.7054509",
"longitude": "16.9366141"
}
],
}
Run Code Online (Sandbox Code Playgroud)
这是我的代码
fetch('http://localhost:8888/api/buildings')
.then(response => response.json())
.then(data => {
userCoordinates = {
latitude: 35.7053509,
longitude: 16.9362301
}
const returnedBuilding = Object.entries(data.data).map(([inst, key]) => key)
.filter(thing => (thing.latitude > userCoordinates.latitude - .5 &&
thing.latitude < userCoordinates.latitude + …Run Code Online (Sandbox Code Playgroud) geolocation ×2
javascript ×2
geography ×1
geometry ×1
haversine ×1
jquery ×1
math ×1
trigonometry ×1