首页 > 解决方案 > 基于对数和纬度计算最近位置(来自数据库)的算法

问题描述

我想要做的是开发一种算法来计算哪些已知位置最接近所选位置。假设我在数据库中有 7 个位置,当用户选择一个时,他应该可以选择查看前 3 个最近的位置(来自数据库)。在数据库中,每个位置都保存有纬度和经度。

关于我该怎么做的任何想法?

示例:假设列表包含 100 个自行车站位置。我在 5 号站,我想找出列表中的其他站在附近。不是距离,而是它们的位置。

标签: javascriptc#localdbasp.net-core-2.2

解决方案


您可以在此处查看如何计算的一个很好的示例。

从这个网站:

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

推荐阅读