PHP查詢附近的人及其距離的實現(xiàn)方法
本文實例講述了PHP查詢附近的人及其距離的實現(xiàn)方法。分享給大家供大家參考,具體如下:
<?php
//獲取該點周圍的4個點
$distance = 1;//范圍(單位千米)
$lat = 113.873643;
$lng = 22.573969;
define('EARTH_RADIUS', 6371);//地球半徑,平均半徑為6371km
$dlng = 2 * asin(sin($distance / (2 * EARTH_RADIUS)) / cos(deg2rad($lat)));
$dlng = rad2deg($dlng);
$dlat = $distance/EARTH_RADIUS;
$dlat = rad2deg($dlat);
$squares = array('left-top'=>array('lat'=>$lat + $dlat,'lng'=>$lng-$dlng),
'right-top'=>array('lat'=>$lat + $dlat, 'lng'=>$lng + $dlng),
'left-bottom'=>array('lat'=>$lat - $dlat, 'lng'=>$lng - $dlng),
'right-bottom'=>array('lat'=>$lat - $dlat, 'lng'=>$lng + $dlng)
);
print_r($squares['left-top']['lat']);
//從數(shù)庫查詢匹配的記錄
$info_sql = "select * from `A` where lat<>0 and lat>{$squares['right-bottom']['lat']} and lat<{$squares['left-top']['lat']} and lng>{$squares['left-top']['lng']} and lng<{$squares['right-bottom']['lng']} ";
//獲取兩點之間的距離
function getDistanceBetweenPointsNew($latitude1, $longitude1, $latitude2, $longitude2) {
$theta = $longitude1 - $longitude2;
$miles = (sin(deg2rad($latitude1)) * sin(deg2rad($latitude2))) + (cos(deg2rad($latitude1)) * cos(deg2rad($latitude2)) * cos(deg2rad($theta)));
$miles = acos($miles);
$miles = rad2deg($miles);
$miles = $miles * 60 * 1.1515;
$feet = $miles * 5280;
$yards = $feet / 3;
$kilometers = $miles * 1.609344;
$meters = $kilometers * 1000;
return compact('miles','feet','yards','kilometers','meters');
}
$point1 = array('lat' => 40.770623, 'long' => -73.964367);
$point2 = array('lat' => 40.758224, 'long' => -73.917404);
$distance = getDistanceBetweenPointsNew($point1['lat'], $point1['long'], $point2['lat'], $point2['long']);
foreach ($distance as $unit => $value) {
echo $unit.': '.number_format($value,4).'<br />';
}
?>
更多關于PHP相關內容感興趣的讀者可查看本站專題:《PHP數(shù)學運算技巧總結》、《PHP數(shù)組(Array)操作技巧大全》、《php正則表達式用法總結》、《PHP+ajax技巧與應用小結》、《PHP運算與運算符用法總結》、《PHP網絡編程技巧總結》、《PHP基本語法入門教程》、《php日期與時間用法總結》、《php面向對象程序設計入門教程》、《php字符串(string)用法總結》、《php+mysql數(shù)據(jù)庫操作入門教程》及《php常見數(shù)據(jù)庫操作技巧匯總》
希望本文所述對大家PHP程序設計有所幫助。
相關文章
php版微信公眾平臺回復中文出現(xiàn)亂碼問題的解決方法
這篇文章主要介紹了php版微信公眾平臺回復中文出現(xiàn)亂碼問題的解決方法,涉及php字符串編碼轉換的相關操作技巧,需要的朋友可以參考下2016-09-09
Erlang的運算符(比較運算符,數(shù)值運算符,移位運算符,邏輯運算符)
如果要比較兩個數(shù),如果兩個數(shù)之間是不同的類型,比如float和int那么,==操作會首先把兩個數(shù)字轉換成相同的相同類型2012-07-07
PHP中strncmp()函數(shù)比較兩個字符串前2個字符是否相等的方法
這篇文章主要介紹了PHP中strncmp()函數(shù)比較兩個字符串前2個字符是否相等的方法,實例分析了strncmp()函數(shù)的功能,參數(shù)用法與使用技巧,需要的朋友可以參考下2016-01-01
php實現(xiàn)在服務器上創(chuàng)建目錄的方法
這篇文章主要介紹了php實現(xiàn)在服務器上創(chuàng)建目錄的方法,實例分析了php中使用mkdir函數(shù)的使用技巧,需要的朋友可以參考下2015-03-03

