邮政编码接近计算在PHP


Zip Code proximity calculation in PHP

我在Web上看到过各种"商店定位器"类型的解决方案,例如,用于查找特定邮政编码给定半径内的商店,它们具有显示最近商店的奇特地图,等等。许多人使用谷歌地图或其他数据库,但许多人也依赖于精确的纬度和经度转换等。但这对我的项目来说太过分了。

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

我只是想让我的客户提供他们的邮政编码,并且通过一个电话,我想获得离我的客户最近的仓库的排序列表。邮政编码已经足够好了,我不想麻烦纬度和经度。

任何想法?

你应该下载Popular Data的邮政编码数据库。

有了这个,您可以使用以下命令来计算距离。

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在中的答案在PHP中计算邮政编码之间的距离。计算完成后,您可以简单地对结果进行排序。