靠近位置使用lat long - google api - php

时间:2017-02-04 05:46:45

标签: php google-maps geolocation

我店里有成千上万的房产。我正在尝试编写自动相关属性。每个属性都有纬度经度。当客户点击任何一个房产时,我们需要建议五个最靠近房产的房产作为相关房产。

我在php框架中工作,所以我希望与php相关的答案。

有人能指出正确的方向吗?

2 个答案:

答案 0 :(得分:0)

据我所知(我最近没有使用谷歌地图),谷歌地图并没有提供这种解决方案。

我相信你需要一个空间数据库;若您目前正在使用RDBMS,请查看Postgresql的postgis扩展程序:

http://postgis.net/

这里有一个很好的使用postgis和spaceial数据的参考列表:

http://twiav-tt.blogspot.ca/2012/07/postgis-using-latitude-and-longitude-to.html http://workshops.boundlessgeo.com/postgis-intro/spatial_relationships.html#st-distance-and-st-dwithin http://revenant.ca/www/postgis/workshop/indexing.html

如果你正在使用Mongo,还有Mongogis:

https://github.com/mongogis

我从未与Mongogis合作过,所以我没有任何好的参考资料。

答案 1 :(得分:0)

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

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

了解更多详情click here