计算距离之间的邮政编码在PHP
题
我抓住了一个数据库的邮政编码及其langitudes/纬度地区,从这个等等 这页.它得到了以下领域:
拉链、纬度、经度、城市、国家、县、ZIP_CLASS
数据是文本文件,但我插入一个MySQL表。我现在的问题是,如何才能利用领域上的计算之间的距离两个邮政编码,用户可以进入的网站上?工作码在PHP以理解
解决方案
您还可以尝试点击网络服务来计算距离。让其他人做重担。
其他提示
这是迈克对魔数的一些注释的回答。对于我来说,一些测试数据似乎对我有用:
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.
}
可以用数学来完成......
function calc_distance($point1, $point2)
{
$distance = (3958 * 3.1415926 * sqrt(
($point1['lat'] - $point2['lat'])
* ($point1['lat'] - $point2['lat'])
+ cos($point1['lat'] / 57.29578)
* cos($point2['lat'] / 57.29578)
* ($point1['long'] - $point2['long'])
* ($point1['long'] - $point2['long'])
) / 180);
return $distance;
}
在你的拉链表中你需要抓住你想要获得距离的两个点的坐标(纬度,长度)。
然后,您可以在SQL中或使用PHP计算距离。这篇文章概述了这两种方法:
示例中的计算基于此线程中已讨论的公式。它以英里和公里为单位提供地球半径,因此它可以让你获得两个单位中两点之间的距离。
上面的链接很棒,因为计算方法不包括任何幻数,只包括地球的半径!
不隶属于 StackOverflow