“查找最近的”移动设备webapp的流程?

发布于 2024-10-04 17:26:00 字数 219 浏览 2 评论 0原文

希望为移动 Web 应用程序实现“查找最近的”流程,该流程将根据用户当前位置自动选择表单中下拉列表中项目的最接近匹配项。

假设我们有列表中每个元素的纬度/经度,以及移动设备上的人员位置,那么找到最近项目的最佳方法是什么?我们将有大约 150-200 个可能的项目,并且希望最接近用户的一个,以便我们可以将其设置为默认值。

有没有一种方法可以在 JS 中有效地做到这一点,或者它更适合服务器端?

Looking to implement a "Find Nearest" process for a mobile web application that will auto select the closest match of an item in a dropdown list in a form based on the user's current location.

Assuming we have the lat/long for each element of our list, and the persons location from the mobile device, what is the best method to locate the closest item? We will have approx 150-200 possible items and want the one closest to the user so we can set it as the default.

Is there a means to efficiently do this in JS or would it be better suited to server side?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

伤痕我心 2024-10-11 17:26:00

您将需要一个循环来计算距离以及最近的距离。使用半正矢公式:

var R = 6371; // km
var dLat = (lat2-lat1).toRad();
var dLon = (lon2-lon1).toRad(); 
var a = Math.sin(dLat/2) * Math.sin(dLat/2) +
        Math.cos(lat1.toRad()) * Math.cos(lat2.toRad()) * 
        Math.sin(dLon/2) * Math.sin(dLon/2); 
var c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1-a)); 
var distance = R * c;

最好运行您自己的基准测试,以确定在服务器端或客户端执行此操作是否更好。

You'll need a loop to calculate distance and henceforth, the closest. Use the Haversine formula:

var R = 6371; // km
var dLat = (lat2-lat1).toRad();
var dLon = (lon2-lon1).toRad(); 
var a = Math.sin(dLat/2) * Math.sin(dLat/2) +
        Math.cos(lat1.toRad()) * Math.cos(lat2.toRad()) * 
        Math.sin(dLon/2) * Math.sin(dLon/2); 
var c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1-a)); 
var distance = R * c;

Better run your own benchmarks to find out if it would be better to do this server-side or client-side.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文