使用 MySQL 空间数据获取 Google 地图上最近的地点
我有一个数据库,其中包含商店列表以及每个商店的纬度和经度。因此,根据我输入的当前(纬度、经度)位置,我想获取 1 公里、5 公里等半径范围内的项目列表?
算法应该是什么?我需要算法本身的 PHP 代码。
I have a database with a list of stores with latitudes and longitudes of each. So based on the current (lat, lng) location that I input, I would like to get a list of items from those within some radius like 1 km, 5km etc?
What should be the algorithm? I need the PHP code for algorithm itself.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
您只需要使用以下查询。
例如,您输入纬度和经度 37 和 -122(以度为单位)。您想要搜索距离当前给定纬度和经度 25 英里以内的用户。
如果您想要以公里为单位的搜索距离,请在上面的查询中将 3959 替换为 6371。
您还可以执行以下操作:
选择所有纬度和经度
然后计算每个记录的距离。
上述过程可以通过多重重定向来完成。
为了优化查询,您可以使用存储过程。
这个也可以帮助您。
You just need use following query.
For example, you have input latitude and longitude 37 and -122 in degrees. And you want to search for users within 25 miles from current given latitude and longitude.
If you want search distance in kms, then replace 3959 with 6371 in above query.
You can also do this like:
Select all Latitude and longitude
Then calculate the distance for each record.
The above process can be done with multiple redirection.
For optimizing query you can use Stored Procedure.
And this can also help you.
您应该选择一个支持空间的数据库,例如 mysql 或 postgresql 然后您可以使用它们提供的一些现成函数。
否则,如果您想手动执行此操作,请检查 这个 供大家注意。
You should choose a database that is spatially enabled like mysql or postgresql and then you can use some of the ready functions they providing.
Else if you want to do it manually check this for heads up.
如果您正在寻找用于计算两组坐标之间的距离的 PHP 代码,这里有一个我改编的类,它将计算以公里为单位的距离。但是,如果您使用数据库,我建议您检查一下您的数据库是否能够进行空间计算(我知道 SQL Server 和 MySQL 是这样的,这是我无法想象的)。
这里有一个有趣的 SQL 解决方案链接,您可能想查看一下。 在 PHP 中优化半正矢公式 SQL 调用
If you're looking for PHP code for calculating distance between two sets of coordinates here's a class that I adapted that will calculate the distance in kilometers. However, if you're using a database I would suggest that you look into whether or not your database is capable of spacial computations (I know that SQL Server and MySQL are, off the top of my head).
Here's an interesting link for a SQL solution that you might want to check out. Optimising a haversine formula SQL call in PHP