我可以给你一个垫脚石,但这是关于它,在这种情况下。
$distance = 10;
$latitude = 37.295092;
$longitude = -121.896490;
$sql = "SELECT loc.*, (((acos(sin(($latitude*pi()/180)) * sin((`latitude`*pi()/180))+cos(($latitude*pi()/180)) * cos((`latitude`*pi()/180)) * cos((($longitude - `longitude`)*pi()/180))))*180/pi())*60*1.1515) AS `distance` FROM table_with_lonlat_ref loc HAVING distance < $distance"
,如果你创建一个查询,没有一个你有2个表之间的连接,并减少1或2的距离,你可以在概念上拿出几乎所有你需要的经/纬度组合。或者您还可以找到一个包含所有美国邮政编码的数据库,该数据库也具有纬度/经度,然后根据匹配的邮政编码查询一张表以插入另一张表。我有这样一个邮编数据库的地方。
也可能我建议http://www.maxmind.com/app/geolite它永远不会完全减少你想为它付出,它每隔一段时间都会改变,但是。由此可以基于访问者的IP,几乎可以获得几乎所有的纬度/经度组合作为您的参考点(在某些情况下,由于IP可能会从一个城镇或2个城镇的中心传输,所以它可能会稍微偏离一点)总比没有好,只给你服务器可以处理的限制,并且不用担心maxmind使用条件之外的API限制
无论如何,总而言之,我一直在很多网站上使用这种组合,但我知道它不是直接回答你的问题,但我希望它能引导你找到一个解决方案