我们假设js中一个数组有每个地点的经纬度,我们制定一个地点的经纬度,来对数组中的与这个点的距离长短进行排序,可以使用以下步骤:
1、计算每个地点到目标点的距离。
2、创建一个包含地点和对应距离的对象数组。
3、使用比较函数对这个对象数组进行排序。
4、提取排序后的地点数组。
以下是一个示例代码,演示如何在JavaScript中实现这个过程:
// 计算两点之间的距离(使用经纬度)
function calculateDistance(lat1, lon1, lat2, lon2) {
const R = 6371; // 地球平均半径(单位:千米)
const dLat = (lat2 - lat1) * (Math.PI / 180);
const dLon = (lon2 - lon1) * (Math.PI / 180);
const a =
Math.sin(dLat / 2) * Math.sin(dLat / 2) +
Math.cos(lat1 * (Math.PI / 180)) * Math.cos(lat2 * (Math.PI / 180)) *
Math.sin(dLon / 2) * Math.sin(dLon / 2);
const c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));
const distance = R * c; // 距离(单位:千米)
return distance;
}
// 目标点的经纬度
const targetLat = 52.5200; // 目标点的纬度
const targetLon = 13.4050; // 目标点的经度
// 包含每个地点经纬度的数组
const locations = [
{ name: "地点 A", lat: 52.5300, lon: 13.4050 },
{ name: "地点 B", lat: 52.5400, lon: 13.4150 },
{ name: "地点 C", lat: 52.5100, lon: 13.3950 },
// 添加更多地点
];
// 计算每个地点到目标点的距离,并创建对象数组
const distances = locations.map(location => {
const distance = calculateDistance(targetLat, targetLon, location.lat, location.lon);
return { name: location.name, distance: distance };
});
// 根据距离排序对象数组
distances.sort((a, b) => a.distance - b.distance);
// 提取排序后的地点数组
const sortedLocations = distances.map(item => item.name);
console.log(sortedLocations);
这段代码首先定义了一个calculateDistance函数来计算两个经纬度之间的距离。然后,它计算每个地点到目标点的距离,并创建了一个包含地点名称和距离的对象数组。最后,它使用sort方法根据距离对对象数组进行排序,然后提取排序后的地点数组。请确保替换示例中的地点和目标点的经纬度,并根据您的需求进行修改。
网友回复
有没有免费让ai自动帮你接管操作电脑的mcp服务?
mcp为啥用Streamable HTTP 替代 HTTP + SSE?
scratchjr有没有开源的前端html网页版本源代码?
多模态大模型能否根据ui交互视频来来模仿写出前端交互动画效果ui代码?
如何用阿里云oss+函数计算fc+事件总线EventBridge+消息队列+数据库+redis缓存打造一个高并发弹性系统?
阿里云函数计算 FC如何在海外节点搭建一个代理网络?
ai studio中gemini build的代码如何发布到github pages等免费网页托管上 ?
如何在cursor、qoder、trae中使用Claude Skills功能?
有没有不用u盘就能重装系统的开源工具?
python如何固定摄像头实时计算停车场停车位剩余数量?


