加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MySql教程 > 正文

java – MySQL选择范围内的坐标

发布时间:2020-12-11 23:39:04 所属栏目:MySql教程 来源:网络整理
导读:我在我的数据库中有100 000个地址(即记录). 它们中的每一个都有自己的坐标(纬度和经度). 现在,考虑到用户的地理位置(纬度和经度),我想在地图上仅显示5英里范围内的地址(使用Google maps v3 API). 这意味着通常只需要在10万个地址中显示5个或6个地址. 一种解

我在我的数据库中有100 000个地址(即记录).

它们中的每一个都有自己的坐标(纬度和经度).

现在,考虑到用户的地理位置(纬度和经度),我想在地图上仅显示5英里范围内的地址(使用Google maps v3 API).

这意味着通常只需要在10万个地址中显示5个或6个地址.

一种解决方案可以是检索所有记录并在Java中应用公式来计算每个地址的距离,并仅在它在范围内时显示它.

这将浪费处理能力,因为当我只需要在地图上显示5或6个记录时,我需要检索所有记录.

如何在数据库端(MySQL)解决此问题,以便仅返回5英里范围内的地址? 最佳答案 您可以使用所谓的Haversine formula.

$sql = "SELECT *,( 3959 * acos( cos( radians(" . $lat . ") ) * cos( radians( lat ) ) * cos( radians( lng ) - radians(" . $lng . ") ) + sin( radians(" . $lat . ") ) * sin( radians( lat ) ) ) ) AS distance FROM your_table HAVING distance < 5";

其中$lat和$lng是你的点的坐标,lat / lng是你的表列.以上将列出5 nm范围内的位置.将3959替换为6371以更改为公里.

此链接可能很有用:https://developers.google.com/maps/articles/phpsqlsearch_v3

编辑:我没有看到你提到Java.此示例在PHP中,但查询仍然是您需要的.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读