我的情况类似于求职搜索引擎中的情况,您在其中输入您正在搜索工作的邮政编码,应用程序返回该邮政编码中的作业以及5,10的邮政编码,距离该邮政编码15,20或25英里,具体取决于用户设置的偏好。
您如何计算邮政编码的邻近地点?
答案 0 :(得分:2)
您需要获取包含相关经度/纬度坐标的邮政编码列表。 Google it - 有很多提供商。
然后看一下this question的算法,了解如何计算距离
答案 1 :(得分:0)
我不会计算它,我会将其存储为数据库中的固定表(仅在国家/地区更改邮政编码分配时更改)。建立关系“is_neighbor_zip”,它有成对(更小,更大)。要确定两个代码是否相邻,请在表格中查看特定对。如果你想要所有相邻的拉链,那么使表格对称可能会更好。
答案 2 :(得分:0)
我不知道你是否可以指望geonames.org在应用程序的生命周期中使用,但你可以使用像他们这样的网络服务来避免重新发明轮子。
答案 3 :(得分:0)
您需要使用GIS数据库并询问其当前位置附近的邮政编码。
您不能简单地使用邮政编码并应用一些数学计算来查找附近的其他邮政编码。邮政编码在地理上并不像美国的区号一样分散,但它们不是坐标系。
唯一的例外是ZIP + 4代码是较大邮政编码的子部分。您可以假设任何具有相同邮政编码的ZIP + 4代码彼此接近。
我曾经在公司合理化邮政编码处理,以下是我做的一些实用说明:
希望有其他有用的信息。
答案 4 :(得分:0)
无论何时创建一个邮政编码,对其进行地理编码(例如谷歌地理编码器api,保存纬度和逻辑),然后google theullrsine公式,这将计算距参考点的距离(如乌鸦飞行),也可以进行地理编码如果是城镇或邮政编码。
澄清更多内容:
当您根据位置检索记录时,您需要将每个经度和纬度DECIMAL与参考点(您的用户使用地理编码的邮政编码或城镇名称)进行比较
您可以查询:
SELECT * FROM photos p WHERE p.long < 60 AND p.long > 50 AND p.lat > -10 AND p.lat > 10
要查找所有英国照片等,因为英国经度在50到60度之间,纬度为+10(我可能已经用纬度切换了很长时间,我对此很模糊)
如果你想找到距离,那么你需要google the hasrsine公式并插入你的参考值。
希望这能更清楚一些,如果您需要详细信息,请发表评论