计算范围内的邮政编码

时间:2011-07-30 18:09:52

标签: php google-maps geolocation zipcode

我有一个网站,用户首先输入他们的邮政编码。

我有一张不同商店的桌子,其中还包含属于商店的邮政编码。

是否可以获取邮政编码,比如用户输入的拉链半径5公里?

所以我可以查询数据库并查找用户附近的所有商店。

我可以使用Google地图吗?我是否可以获得所有邮政编码(单个国家/地区)及其坐标的预先计算列表?还有其他建议吗?

4 个答案:

答案 0 :(得分:2)

Google有tutorial就可以指出正确的方向。 SQL查询中的三角测量是唯一棘手的部分。乍一看,基本上有两种方法可以解决这个问题:

  1. 获取每个商店的纬度/经度坐标。您可以使用Google地图“Geocoding API通过提供商店的街道地址来执行此操作。您只需为每个位置执行一次此操作。
  2. 仅为每个商店提供邮政编码,并使用带有几何中心纬度/经度坐标的邮政编码表。找到范围内的邮政编码,然后显示带有这些邮政编码的商店。
  3. 第一个会更准确,但要么有效。如果您计算距离邮政编码而不是地址的距离,则仍需要查找该邮政编码的纬度/经度坐标。

答案 1 :(得分:2)

您可以存储每个邮政编码的经度/纬度。这些数据可以在网上免费获得,其中一个是http://www.boutell.com/zipcodes/。然后你可以通过使用大圆距离函数在半径中找到拉链代码,这里讨论MySQL Great Circle Distance (Haversine formula)

答案 2 :(得分:1)

你需要从邮政编码获得纬度/经度,然后你可以通过via maps或geo places api找到附近的地方。前往google maps api或YQL geo api。

答案 3 :(得分:1)

您需要每个邮政编码的纬度和经度,然后使用Haversine Formula获取近似距离。