我想使用这个公式在php中。我有一个数据库,其中保存了一些经纬度的值。
我希望能够找到与输入的某个经纬度值相距多少公里的所有数据库中的点。为此,我使用了Google Maps API上的公式:
( 6371 * acos( cos( radians(37) ) * cos( radians( lat ) ) * cos( radians( lng ) - radians(-122) ) + sin( radians(37) ) * sin( radians( lat ) ) ) )
当然,在php中我使用deg2rad
来代替弧度。值37,-122是我的输入值,lat,lng是我的数据库值。
下面是我的代码。问题在于出了错,但我不知道原因。距离的值当然是错误的。
//values of latitude and longitute in input (Rome - eur, IT)
$center_lat = "41.8350";
$center_lng = "12.470";
//connection to database. it works
(..)
//to take each value in the database:
$query = "SELECT * FROM Dati";
$result = mysql_query($query);
while ($row = @mysql_fetch_assoc($result)){
$lat=$row['Lat']);
$lng=$row['Lng']);
$distance =( 6371 * acos((cos(deg2rad($center_lat)) ) * (cos(deg2rad($lat))) * (cos(deg2rad($lng) - deg2rad($center_lng)) )+ ((sin(deg2rad($center_lat))) * (sin(deg2rad($lat))))) );
}
例如,对于以下数值: $lat= 41.9133741000 $lng= 12.5203944000
我得到了距离输出为distance="4826.9341106926"
$center_lat = "41.8350";
,应该改为$center_lat = 41.8350;
,也许它会根据你的语言环境设置将“.”解析为千位分隔符。 - martinstoeckli