兩地距離我們通常用到最多的就是調(diào)用百度地圖的api來實現(xiàn)了,但有時我們并不需要這接口了只需要簡單的處理一即可,這時可以利用php來實現(xiàn),具體如下.
目前在做一個交友項目,需要知道兩個用戶之間的距離,百度了一下,操作如下,我們最容易獲取到用戶地理位置的信息就是ip。
我們通過百度api獲取用戶經(jīng)緯度,用ip獲取經(jīng)緯度api:
http://developer.baidu.com/map/index.php?title=webapi/ip-api
得到經(jīng)緯兩個用戶經(jīng)緯度之后就可以計算兩用戶之間的距離了,計算如下:
- /**
- * @desc 根據(jù)兩點間的經(jīng)緯度計算距離
- * @param float $lat 緯度值
- * @param float $lng 經(jīng)度值
- */
- function getDistance($lat1, $lng1, $lat2, $lng2)
- {
- $earthRadius = 6367000; //approximate radius of earth in meters
- $lat1 = ($lat1 * pi() ) / 180;
- $lng1 = ($lng1 * pi() ) / 180;
- $lat2 = ($lat2 * pi() ) / 180;
- $lng2 = ($lng2 * pi() ) / 180;
- //開源軟件:Vevb.com
- $calcLongitude = $lng2 - $lng1;
- $calcLatitude = $lat2 - $lat1;
- $stepOne = pow(sin($calcLatitude / 2), 2) + cos($lat1) * cos($lat2) * pow(sin($calcLongitude / 2), 2);
- $stepTwo = 2 * asin(min(1, sqrt($stepOne)));
- $calculatedDistance = $earthRadius * $stepTwo;
- return round($calculatedDistance);
- }
代碼未經(jīng)測試,測試后再更新本篇文章告知結(jié)果.
新聞熱點
疑難解答