PHP中的邮政编码邻近度计算

时间:2011-12-18 05:02:24

标签: php zipcode proximity

我在网上看到过各种各样的“商店定位器”式解决方案,用于查找特定邮政编码的给定半径范围内的商店,并且他们有精美的地图显示最近的商店等。许多人使用谷歌地图或其他数据库,但许多人还依赖于精确的纬度和经度转换等。但这对我的项目来说太过分了。

在我的情况下,我只是在后端处理订单(使用PHP),我已经有了所有供应商仓库的所有邮政编码列表。

我只是希望我的客户提供他们的邮政编码,并且只需一个电话我就可以找到离我的客户最近的仓库的分类清单。邮编很好 - 我不想打扰纬度和经度。

有什么想法吗?

1 个答案:

答案 0 :(得分:5)

您应该下载Popular Data's ZIP code database

使用此功能,您可以使用以下方法计算距离。

function calc_distance($point1, $point2)
{
    $radius      = 3958;      // Earth's radius (miles)
    $deg_per_rad = 57.29578;  // Number of degrees/radian (for conversion)

    $distance = ($radius * pi() * sqrt(
                ($point1['lat'] - $point2['lat'])
                * ($point1['lat'] - $point2['lat'])
                + cos($point1['lat'] / $deg_per_rad)  // Convert these to
                * cos($point2['lat'] / $deg_per_rad)  // radians for cos()
                * ($point1['long'] - $point2['long'])
                * ($point1['long'] - $point2['long'])
        ) / 180);

    return $distance;  // Returned using the units used for $radius.
}

上面是Adam Bellaire's answer in Calculating distance between zip codes in PHP被盗的。完成此计算后,您只需对结果进行排序即可。