使用视图使用参数中的位置查找附近的用户列表

发布于 2024-12-09 19:25:15 字数 105 浏览 0 评论 0原文

我使用的是drupal 6.X 我正在通过视图和视图数据源模块创建一个 api 当我们在视图中定义参数时,我将在 url 的末尾添加位置的纬度和经度,以便我可以按照从最近到先的顺序获取用户列表。

I am using drupal 6.X
I am creating an api through views and views datasource module
in which i will add the latitude and longitude of the location in the end of the url as we define the arguments in the view so that i can get the list of users in the order of the nearest first.

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

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

发布评论

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

评论(1

孤单情人 2024-12-16 19:25:15

我认为创建自定义模块会更容易。基本上你想针对你的经度和纬度运行 Haversine 公式

SELECT id, ( 3959 * acos( cos( radians(37) ) * cos( radians( lat ) ) * cos( radians( lng ) - radians(-122) ) + sin( radians(37) ) * sin( radians( lat ) ) ) ) AS distance 
FROM markers HAVING distance < 25 ORDER BY distance LIMIT 0 , 20;

这是来自 http://code.google.com/apis/maps/articles/phpsqlsearch.html ,执行此操作:

将找到距离 37, -122 坐标 25 英里半径内最近的 20 个位置。它根据该行的纬度/经度和目标纬度/经度计算距离,然后仅询问距离值小于 25 的行,按距离对整个查询进行排序,并将其限制为 20 个结果。要按公里而不是英里进行搜索,请将 3959 替换为 6371。

我已经用 MySQL 尝试了这个精确的论坛,它运行得很好,我什至有一个完全成熟的模块可以使用它,但不幸的是它适用于 Drupal 7 并且完全依赖于实体系统,因此对您的情况没有帮助。

I think it would be easier to create a custom module. Basically you want to run the Haversine formula against your longitude and latitudes:

SELECT id, ( 3959 * acos( cos( radians(37) ) * cos( radians( lat ) ) * cos( radians( lng ) - radians(-122) ) + sin( radians(37) ) * sin( radians( lat ) ) ) ) AS distance 
FROM markers HAVING distance < 25 ORDER BY distance LIMIT 0 , 20;

This is from http://code.google.com/apis/maps/articles/phpsqlsearch.html, and does this:

will find the closest 20 locations that are within a radius of 25 miles to the 37, -122 coordinate. It calculates the distance based on the latitude/longitude of that row and the target latitude/longitude, and then asks for only rows where the distance value is less than 25, orders the whole query by distance, and limits it to 20 results. To search by kilometers instead of miles, replace 3959 with 6371.

I've tried this exact forumla with MySQL and it works very well, I even have a fully fledged module working for it but unfortunately it's for Drupal 7 and relies entirely on the entity system so wouldn't be helpful in your case.

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