ホームページ  >  記事  >  php教程  >  PHPは2つの経度と緯度の位置間の距離を計算します

PHPは2つの経度と緯度の位置間の距離を計算します

WBOY
WBOYオリジナル
2016-06-21 08:49:101731ブラウズ

php は、指定された 2 つの経度および緯度の位置間の距離を計算します。これは、指定された位置の経度および緯度を計算するとき、近隣の商業地域を計算する場合、および指定された位置と近隣の商業地域の間の距離を計算するときに実行されます。まだ使用されています。以下に具体的な機能コードと使用例を示します。

住所の緯度と経度を取得する方法については、次の記事を参照してください。

Google マップ バージョン 3 で地理的位置に基づいて緯度と経度を取得する方法

<?php
/**
*求两个已知经纬度之间的距离,单位为米
*@param lng1,lng2 经度
*@param lat1,lat2 纬度
*@return float 距离,单位米
*@author www.Alixixi.com
**/
function getdistance($lng1,$lat1,$lng2,$lat2){
	//将角度转为狐度
	$radLat1=deg2rad($lat1);//deg2rad()函数将角度转换为弧度
	$radLat2=deg2rad($lat2);
	$radLng1=deg2rad($lng1);
	$radLng2=deg2rad($lng2);
	$a=$radLat1-$radLat2;
	$b=$radLng1-$radLng2;
	$s=2*asin(sqrt(pow(sin($a/2),2)+cos($radLat1)*cos($radLat2)*pow(sin($b/2),2)))*6378.137*1000;
	return $s;
}

「上海延安西路路地 2055 号」から「上海静安寺」までの距離は次のとおりです:

上海延安西路2055巷 経度と緯度: 31.2014966,121.40233369999998

上海静安寺経度と緯度: 31.22323799999999,121.44552099999998

の場合:

echo getdistance(31.2014966,121.40233369999998,31.22323799999999,121.44552099999998);

結果は、4970.4248747365、約 4970 メートル、約 10 マイルです。これまでのこれら 2 つの地点間の移動経験によれば、これはほぼ同じはずです。



声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。