我正在建立一个网站,每个用户都会将自己的地址和网站与最近的人匹配,我为方向嵌入了Google地图API,但该网站如何与用户匹配?
如果你能给我一些例子或任何可以帮助我达到目标的策略?
答案 0 :(得分:1)
您可以在Get latitude and longitude automatically using php, API
了解如何获取纬度/经度将每个用户的纬度/经度存储在数据库中的数据中。
此外,存储每个用户的COUNTRY是明智的 - 这样您的查询就会减少。强烈建议还存储ZIP / POSTAL等区域数据,以进一步减少查询负担。
然后,在您使用的任何php页面上,您将拥有您正在搜索的用户的区域数据(如上所述)。使用该数据循环遍历同一ZIP / POSTAL区域内的所有其他成员并查询其存储的纬度/经度。
在同一个ZIP / POSTAL区域中有其他人的纬度/长度后,您可以使用以下函数:http://snipplr.com/view/2531/
或者,您可以通过SQL语句执行大量此操作,如https://stackoverflow.com/a/7672821/797620所述,但我自己从未测试过该语句。
谷歌的这个页面提供了另一种非常详细的方法,您可以尝试一下:https://developers.google.com/maps/articles/phpsqlsearch_v3
答案 1 :(得分:0)
这个问题让PostgreSQL / POSTGIS解决方案感到尖叫。如果需要,将lat-lon存储在包含一些元信息的表中。然后让POSTGIS的魔力发挥作用。
PostgreSQL / Postgis经过优化,可以进行这些与地理空间相关的查询!实际上在新版本中> 9.1引入K-Nearest Neighbor运算符,它返回N个最近邻居(因此名称):
SELECT * FROM your_table ORDER BY your_table.geom <-> "your location..." LIMIT 10
这很容易:)
“&lt; - &gt;是一个”距离“运算符,但只有当它出现在ORDER BY子句中时它才会使用索引。在将运算符放入ORDER BY并使用LIMIT截断结果之间设置,我们可以非常快速地(在2M记录表上小于10ms,在这种情况下)得到10个最接近我们测试点的点。“