gpt4 book ai didi

javascript - 如何过滤和统计距离原点 10 公里的 JSON 对象纬度和经度?

转载 作者:行者123 更新时间:2023-12-01 00:53:58 25 4
gpt4 key购买 nike

我正在尝试过滤和计算给定原点 10 公里范围内的 api 端点的对象。我一直困惑于如何过滤 api 结果并计算匹配的项目数。

我能够过滤数据并通过一对一比较来计算有多少个项目具有“香港”城市,但距离计算是过滤数据的另一个复杂层。

coords = [
[
City: "Hong Kong",
Lat: “22.667790”,
Long: “-111.909905”
],
[
City: "Atlanta",
Lat: “22.958769”,
Long: “-111.948939”
],
[
City: "Paris",
Lat: “23.989803”,
Long: “-112.989850”
],
[
City: "Sydney",
Lat: “22.001118”,
Long:”-111.939433”
],
[
City: "Hong Kong",
Lat: “22.667790”,
Long: “-111.909905”
],
];



origin = [
lat:"22.111009",
long: "-113.667870"
];

function getDistance(lat1, lon1, lat2, lon2) {
var R = 6371; // Radius of the earth in km
var dLat = deg2rad(lat2 - lat1); // deg2rad below
var dLon = deg2rad(lon2 - lon1);
var a =
Math.sin(dLat / 2) * Math.sin(dLat / 2) +
Math.cos(deg2rad(lat1)) * Math.cos(deg2rad(lat2)) *
Math.sin(dLon / 2) * Math.sin(dLon / 2);
var c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));
var d = R * c; // Distance in km
return d;

}


function deg2rad(deg) {
return deg * (Math.PI / 180);
}



coords.forEach(function(coord){
distance = getDistance(coord.lat, coord.long, origin.lat, origin.long);

if (distance < 10){
return distance;
}

});

到目前为止,我还无法返回任何有意义的内容,只能返回原点与每个对象之间的距离的列表。它应该显示原点 10 公里内有多少个城市。

最佳答案

您需要使用过滤器 method :

const filtered = coords.filter(coord => {
distance = getDistance(coord.lat, coord.long, origin.lat, origin.long);
return distance < 10
});

现在您已将过滤结果存储在名为filtered的数组中

关于javascript - 如何过滤和统计距离原点 10 公里的 JSON 对象纬度和经度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56748639/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com