javascript - 基于对数和纬度计算最近位置(来自数据库)的算法
问题描述
我想要做的是开发一种算法来计算哪些已知位置最接近所选位置。假设我在数据库中有 7 个位置,当用户选择一个时,他应该可以选择查看前 3 个最近的位置(来自数据库)。在数据库中,每个位置都保存有纬度和经度。
关于我该怎么做的任何想法?
示例:假设列表包含 100 个自行车站位置。我在 5 号站,我想找出列表中的其他站在附近。不是距离,而是它们的位置。
解决方案
您可以在此处查看如何计算的一个很好的示例。
从这个网站:
var R = 6371e3; // metres
var φ1 = lat1.toRadians();
var φ2 = lat2.toRadians();
var Δφ = (lat2-lat1).toRadians();
var Δλ = (lon2-lon1).toRadians();
var a = Math.sin(Δφ/2) * Math.sin(Δφ/2) +
Math.cos(φ1) * Math.cos(φ2) *
Math.sin(Δλ/2) * Math.sin(Δλ/2);
var c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1-a));
var d = R * c; //<-- distance between lat1/lon1 and lat2/lon2
推荐阅读
- arrays - 对象reactjs的数组
- php - how to pass json data into datatable with passing id in codeigniter?
- amazon-web-services - 用于为 Lex 转换 MP3 输入的 AWS Lambda 代码
- laravel - Laravel Passport:如何查询“护照密钥”?
- java - 如何在 Web 应用程序的 aspectj 类中访问请求对象
- excel - Large table to be transformed by moving 200+ columns to rows
- python - 我无法在 pycharm 社区版中导入 tkinter
- java - 关于责任、对象的生命周期和 DI 依赖关系,工厂、生产者和提供者之间有什么区别?
- leaflet - Leaflet 上带有个性化图标和 html 的个性化标记
- java - eclipse:找不到适合 jdbc 的驱动程序