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

标签 php zipcode proximity

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

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

我只是希望我的客户提供他们的邮政编码,并且只需一个电话,我就可以得到离我的客户最近的仓库的排序列表。邮政编码已经足够了 - 我不想为纬度和经度烦恼。

有什么想法吗?

最佳答案

您应该下载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 。完成此计算后,您可以对结果进行简单排序。

关于php - PHP 中的邮政编码邻近度计算,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8549940/

相关文章:

geolocation - 邮政编码的最近邮政编码?

php 输入字段显示为 Integer

google-maps - 根据谷歌地图中的邮政编码绘制六边形?

android - 如何控制Android接近传感器?

php - Doctrine 在使用 joins 和 offset 时跳过数据集

php - php 中的背景 css

PHP MySQL 选择查询

javascript - PHP/JS 进度条

android - 接近唤醒锁并不总是重新打开屏幕

android - 手机重启后接近警报不起作用