PHP查詢附近的人及其距離的實(shí)現(xiàn)方法
本文實(shí)例講述了PHP查詢附近的人及其距離的實(shí)現(xiàn)方法。分享給大家供大家參考,具體如下:
<?php //獲取該點(diǎn)周圍的4個(gè)點(diǎn) $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']} "; //獲取兩點(diǎn)之間的距離 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 />'; } ?>
更多關(guān)于PHP相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《PHP數(shù)學(xué)運(yùn)算技巧總結(jié)》、《PHP數(shù)組(Array)操作技巧大全》、《php正則表達(dá)式用法總結(jié)》、《PHP+ajax技巧與應(yīng)用小結(jié)》、《PHP運(yùn)算與運(yùn)算符用法總結(jié)》、《PHP網(wǎng)絡(luò)編程技巧總結(jié)》、《PHP基本語法入門教程》、《php日期與時(shí)間用法總結(jié)》、《php面向?qū)ο蟪绦蛟O(shè)計(jì)入門教程》、《php字符串(string)用法總結(jié)》、《php+mysql數(shù)據(jù)庫操作入門教程》及《php常見數(shù)據(jù)庫操作技巧匯總》
希望本文所述對(duì)大家PHP程序設(shè)計(jì)有所幫助。
相關(guān)文章
淺談php字符串反轉(zhuǎn) 面試中經(jīng)常遇到
下面小編就為大家分享一篇淺談php字符串反轉(zhuǎn) 面試中經(jīng)常遇到的問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2018-01-01php版微信公眾平臺(tái)回復(fù)中文出現(xiàn)亂碼問題的解決方法
這篇文章主要介紹了php版微信公眾平臺(tái)回復(fù)中文出現(xiàn)亂碼問題的解決方法,涉及php字符串編碼轉(zhuǎn)換的相關(guān)操作技巧,需要的朋友可以參考下2016-09-09Erlang的運(yùn)算符(比較運(yùn)算符,數(shù)值運(yùn)算符,移位運(yùn)算符,邏輯運(yùn)算符)
如果要比較兩個(gè)數(shù),如果兩個(gè)數(shù)之間是不同的類型,比如float和int那么,==操作會(huì)首先把兩個(gè)數(shù)字轉(zhuǎn)換成相同的相同類型2012-07-07PHP中strncmp()函數(shù)比較兩個(gè)字符串前2個(gè)字符是否相等的方法
這篇文章主要介紹了PHP中strncmp()函數(shù)比較兩個(gè)字符串前2個(gè)字符是否相等的方法,實(shí)例分析了strncmp()函數(shù)的功能,參數(shù)用法與使用技巧,需要的朋友可以參考下2016-01-01php版微信公眾號(hào)接口實(shí)現(xiàn)發(fā)紅包的方法
這篇文章主要介紹了php版微信公眾號(hào)接口實(shí)現(xiàn)發(fā)紅包的方法,結(jié)合實(shí)例形式分析了php版微信公眾號(hào)實(shí)現(xiàn)發(fā)紅包的接口調(diào)用方法與相關(guān)使用注意事項(xiàng),需要的朋友可以參考下2016-10-10php實(shí)現(xiàn)在服務(wù)器上創(chuàng)建目錄的方法
這篇文章主要介紹了php實(shí)現(xiàn)在服務(wù)器上創(chuàng)建目錄的方法,實(shí)例分析了php中使用mkdir函數(shù)的使用技巧,需要的朋友可以參考下2015-03-03