php多個經緯度合併

2021-10-07 03:14:14 字數 1674 閱讀 2163

//start----------------------合併多個經緯度點--------------------------------

/** * 求兩個已知經緯度之間的距離,單位為公尺

* @param lng1 $ ,lng2 經度

* @param lat1 $ ,lat2 緯度

* @return float 距離,單位公尺

*/function getdistance($lng1, $lat1, $lng2, $lat2)

/* * 合併多個經緯度點,獲取中心座標

* @param data 需要合併的經緯度點陣列

* @param latname data中緯度的鍵名

* @param lngname data中經度的鍵名

* @return newdata 合併後的經緯度

* num為原本座標數

* 形式 :

* array (['count']=>num, [$latname] => 45.813538469271, [$lngname] => 75.682996448603 )

* */

function getcenterfromdegrees($data,$latname,$lngname)

$x /= $num_coords;

$y /= $num_coords;

$z /= $num_coords;

$lon = atan2($y, $x);

$hyp = sqrt($x * $x + $y * $y);

$lat = atan2($z, $hyp);

return array('count'=>count($data), $latname=>rad2deg($lat), $lngname=>rad2deg($lon));}/*

* 合併多個經緯度點

* @param data 需要合併的經緯度點一維陣列

* @param distance 指定經緯度點間距離小於多少合併

* @param latname data中緯度的鍵名

* @param lngname data中經度的鍵名

* @return newdata 經緯度合併後的新陣列

* */

function coordmerge($data,$distance,$latname,$lngname,$centerspot=)

}//合併在一定範圍內的經緯度

$centerspot = getcenterfromdegrees($mergedata, $latname, $lngname);

$data = array_values($data);

//此處為遞迴時返回需要加上return

return coordmerge($data, $distance, $latname, $lngname, $centerspot);

} else

return $centerspot;

}}//end-------------------------合併多個經緯度點-------------------------------

使用時呼叫coordmerge即可。

php根據經緯度排序,根據經緯度篩選距離段

sql 語句 select location.from select round 6378.138 2 asin sqrt pow sin 36.668530 pi 180 px lat pi 180 2 2 cos 36.668530 pi 180 cos px lat pi 180 pow si...

經緯度計算

define earth radius,6371 地球半徑,平均半徑為6371km 計算某個經緯度的周圍某段距離的正方形的四個點 param lng float 經度 param lat float 緯度 param distance float 該點所在圓的半徑,該圓與此正方形內切,預設值為0.5...

經緯度轉化

經緯度的表示 1.經緯度以度數表示,2.度 角分 1角分等於六十分之一度 秒 一秒等於六十分之一分 表示。如 北緯n39 34 14.95 東經e116 34 52.18 化為小數點的度為 北緯39.5708181173,東經116.5811614825 具體化法 北緯n39 34 14.95 39...