久久久久在线观看_又色又爽又黄的免费视频播放_一区中文字幕_日韩电影在线播放

今日焦點 焦點資訊 營銷之道 企業(yè)報道 淘寶運營 網(wǎng)站建設 軟件開發(fā) 400電話
  當前位置: 首頁 » 資訊 » 軟件開發(fā) » 正文

PHP實現(xiàn)搜索附近的人功能

放大字體  縮小字體 發(fā)布日期:2018-02-22  來源:企業(yè)800網(wǎng)  作者:新格網(wǎng)  瀏覽次數(shù):971  【去百度看看】
核心提示:?首先,我們應該這樣想: 既然我們知道了用戶當前位置的經(jīng)緯度,又知道我們將要搜索的范圍,我們可不可以計算出一個范圍 ?也就是說,根據(jù)一個中心點和半徑,計算出符合條件的經(jīng)緯度的最大值和最小值 。
首先,我們應該這樣想: 既然我們知道了用戶當前位置的經(jīng)緯度,又知道我們將要搜索的范圍,我們可不可以計算出一個范圍 ?也就是說,根據(jù)一個中心點和半徑,計算出符合條件的經(jīng)緯度的最大值和最小值 。

具體實現(xiàn):

那么到此,想要獨立思考完成的小伙伴可以不要繼續(xù)往下看了。
上面我們提到該功能的一個實現(xiàn)原理,接下來我們就講解一下具體的實現(xiàn)步驟。
我們先聲明一個函數(shù),用作計算經(jīng)緯度的范圍:


private function calcScope($lat, $lng, $radius) {
  $degree = (24901*1609)/360.0;
  $dpmLat = 1/$degree;

  $radiusLat = $dpmLat*$radius;
  $minLat = $lat - $radiusLat;    // 最小緯度
  $maxLat = $lat + $radiusLat;    // 最大緯度

  $mpdLng = $degree*cos($lat * (PI/180));
  $dpmLng = 1 / $mpdLng;
  $radiusLng = $dpmLng*$radius;
  $minLng = $lng - $radiusLng;   // 最小經(jīng)度
  $maxLng = $lng + $radiusLng;   // 最大經(jīng)度

  
  $scope = array(
    'minLat'  => $minLat,
    'maxLat'  => $maxLat,
    'minLng'  => $minLng,
    'maxLng'  => $maxLng
    );
  return $scope;
}

返回的數(shù)組中包含了在 $radius 范圍內,符合條件的最大最小經(jīng)緯度。
既然我們已經(jīng)獲取到了范圍,那么我們就可以開始從數(shù)據(jù)庫中查找所有在這個經(jīng)緯度范圍內符合條件的記錄:


public function searchByLatAndLng($lat, $lng, $radius) {
  $scope = $this->calcScope($lat, $lng, $radius);   // 調用范圍計算函數(shù),獲取最大最小經(jīng)緯度
  
  $sql = 'SELECt `字段` FROM `表名` WHERe `Latitude` < '.$scope['maxLat'].' and `Latitude` > '.$scope['minLat'].' and `Longitude` < '.$scope['maxLng'].' and `Longitude` > '.$scope['minLng'];

  $stmt = self::$db->query($sql);
  $res = $stmt->fetchAll(PDO::FETCH_ASSOC);    // 獲取查詢結果并返回
  return $res;
}

擴展:

直到現(xiàn)在,我們已經(jīng)知道了如何計算出附近的人,但在實際需求中,我們往往需要計算出每一個人與當前中心點的實際距離。
接著,我們再來看一個方法:


public function calcDistance($lat1, $lng1, $lat2, $lng2) {
  
  $lat1 = doubleval($lat1);
  $lng1 = doubleval($lng1);
  $lat2 = doubleval($lat2);
  $lng2 = doubleval($lng2);
  
  $theta = $lng1 - $lng2;
  $dist = sin(deg2rad($lat1)) * sin(deg2rad($lat2)) + cos(deg2rad($lat1)) * cos(deg2rad($lat2)) * cos(deg2rad($theta));
  $dist = acos($dist);
  $dist = rad2deg($dist);
  $miles = $dist * 60 * 1.1515;
  return ($miles * 1.609344);
}

相關推薦:

PHP查詢附近的人及其距離的實現(xiàn)方法,php查詢距離實現(xiàn)_PHP教程

以上就是PHP實現(xiàn)搜索附近的人功能的詳細內容,更多請關注php中文網(wǎng)其它相關文章!

 
關鍵詞: php,功能,近的
長春  短信群發(fā)  吉林省  紅視窗  中國  長春市  玉米  長春網(wǎng)站建設  網(wǎng)站  振華  設備  設計  吉林  廣州  撲克  敘利亞  長春上門維修電腦  聯(lián)合聲明  內蒙古  消費者權益  突擊步槍  新聞中心  滿洲里  中非合作論壇  記者會  美國白宮  化學武器  中國政府  中消協(xié)  強臺風  塞內加爾  中國電影  消費者  海外網(wǎng)  長春北大青鳥  敘政府  中國智能建筑節(jié)  重慶市  網(wǎng)站建設  北京市  國家元首  長春上門修電腦  產(chǎn)業(yè)園  北斗導航  中國芯  龍頭企業(yè)  長春上門做系統(tǒng)  長春電腦上門維修  黨委書記  塞申斯  售前咨詢技巧  侯建國,質量,中國特色社會主義  俄羅斯  發(fā)言人  特朗普,貿易戰(zhàn),美國  運載火箭  中國軍網(wǎng)  今日頭條  美國人  特朗普  長春國貿  一帶一路  位置服務  英國皇家海軍  中國移動  檢察官  人民政府  發(fā)布會  美國海軍陸戰(zhàn)隊  中國市場  小學生  指示  圓桌  撫養(yǎng)費  觀察者網(wǎng)  白宮  彈道導彈  小雨  美國  郭曉東  臺風  尼克松  參議院  亞馬遜  日本  步槍  國家安全  化武  毒品  動物世界  大阪  廣東省  劉強東  非洲  美國陸軍  劉雨欣  美國總統(tǒng)  中國空軍  中非  結婚紀念日 
 
[ 資訊搜索 ]  [ 加入收藏 ]  [ 告訴好友 ]  [ 打印本文 ]  [ 違規(guī)舉報 ]  [ 關閉窗口 ]

 
0條 [查看全部]  相關評論

 
網(wǎng)站首頁 | 關于我們 | 聯(lián)系方式 | 使用協(xié)議 | 版權隱私 | 網(wǎng)站地圖 | 排名推廣 | 廣告服務 | 積分換禮 | 網(wǎng)站留言 | RSS訂閱 | 皖ICP備2021004516號-14
企業(yè)800網(wǎng) · 提供技術支持