根據經緯度查詢附近的xxx

2021-02-13 粒子視線

<?php

define('EARTH_RADIUS',6378.137); //地球平均半徑,km

//當前坐標

$lng = 116.441709;

$lat = 39.946158;

/**

 * distance 單位 米

  */

function returnSquarePoint($lng, $lat,$distance = 3000){

$distance = $distance /1000; //換算成km

$dlng =  2 * asin(sin($distance / (2 * EARTH_RADIUS)) / cos(deg2rad($lat)));

$dlng = rad2deg($dlng);

$dlat = $distance/EARTH_RADIUS;

$dlat = rad2deg($dlat);

return 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) //右下方點經緯度

);

 }

/**

 * 計算距離

 */

 function getDistance($lng1,$lat1,$lng2,$lat2){

//將角度轉為狐度

$radLat1=deg2rad($lat1);//deg2rad()函數將角度轉換為弧度

$radLat2=deg2rad($lat2);

$radLng1=deg2rad($lng1);

$radLng2=deg2rad($lng2);

$a=$radLat1-$radLat2;

$b=$radLng1-$radLng2;

$s=2*asin(sqrt(pow(sin($a/2),2)+cos($radLat1)*cos($radLat2)*pow(sin($b/2),2)))* EARTH_RADIUS *1000;

return $s;

}

/**

 * 排序

 */

function array_sort($arr,$keys,$type='asc'){ 

$keysvalue = $new_array = array();

foreach ($arr as $k=>$v){

$keysvalue[$k] = $v[$keys];

}

if($type == 'asc'){

asort($keysvalue);

}else{

arsort($keysvalue);

}

reset($keysvalue);

foreach ($keysvalue as $k=>$v){

$new_array[$k] = $arr[$k];

}

return $new_array; 

//當前坐標3000米範圍內所有商家

$quares = returnSquarePoint($lng,$lat,3000);

mysql_connect('localhost','root','123456');

mysql_select_db('weixin');

mysql_query('set names utf8');

//不要隨意改動經緯度條件查詢,如果需要修改請仔細看清條件判斷

$sql = sprintf("select * from shang where (lng<>0 and lat<>0) and (lng between %s and %s) and (lat between %s and %s) ", 

$quares['left-top']['lng'],$quares['right-bottom']['lng'],$quares['right-bottom']['lat'],$quares['right-top']['lat']);

$query = mysql_query($sql);

$i = 0;

while($row = mysql_fetch_array($query,MYSQL_ASSOC)){

$data[$i] = $row;

$data[$i]['distance'] = getDistance($lng,$lat,$row['lng'],$row['lat']); 

$i++;

}

$data = array_sort($data,'distance','asc'); //由近至遠排序

//$data = array_sort($data,'distance','desc'); //由遠至近排序

var_dump($data);

-

歡迎廣大業內朋友投稿,投稿郵箱:thor.wu@qq.com

相關焦點

  • 經緯度查詢
    基於百度地圖開發包開發的經緯度查詢顯示軟體,具備移動聯通電信全網基站查詢功能,可以在地圖上直觀查看基站經緯度及地址信息,並借用百度導航到指定點,具有百度地圖大部分功能,長按地圖點獲取信息等。
  • 方舟生存進化經緯度查詢方法 手機版經緯度
    方舟生存進化怎麼查看經緯?經緯度也就是坐標的意思啦,下面小編就來給大家講解下查看經緯坐標的方法,還不會的就一起來看看吧。
  • R包geosphere根據經緯度坐標計算地理距離
    其實正文大部分內容和標題無關......畢竟根據樣地的經緯度坐標計算地理距離
  • 手機高德地圖在哪裡看經緯度 怎麼查經緯度坐標方法
    貌似在手機客戶端裡面看不到這個經緯度,不過我們可以藉助手機網頁來進行查詢;  具體的方法我們可以先來打開手機瀏覽器,然後進入到高德地圖官網,對著你想要查看經緯度的地點右鍵,再點擊【這是哪兒】; 原標題:手機高德地圖怎麼查經緯度 查經緯度坐標方法 責任編輯:曾少林
  • 電腦如何實現查找「附近的人」?
    當我們打開微信的附近的人可以看到附近的朋友,當我們打開美團附近的商家可以查找附近的飯店、影院等等。所有這一切都離不開一個功能:基於LBS的「附近的」功能,那計算機是如何實現這種功能的?本文討論一下其原理。
  • IM裡「附近的人」功能實現原理是什麼?如何高效率地實現它?
    1、引言基本上以陌生人社交為主的IM產品裡,都會增加「附近的人」、「附近的xxx」這種以LBS(地理位置)為導向的產品特色(微信這個熟人社交產品裡為啥也有「附近的人」?這當然是歷史原因了,微信當初還不是想藉此引流嘛。。。)
  • 手機一鍵查詢地鐵站擁擠度(附截圖)
    其中,將首次發布車站擁擠度信息,乘客出門前就可用手機查詢附近地鐵站擁擠度,選擇舒適度最高的車站上車,這在國內外尚無先例。北京地鐵還專門成立了擁擠度功能開發小組,建立應急響應機制,確保初期數據傳輸順暢、顯示穩定。未來,擁擠度信息將可實現根據乘客出行習慣精準推送。
  • 經緯度坐標的換算 地理坐標的度分秒——十進位
    經緯度坐標單位有不同的顯示方法,有度分秒(DMS)和度(DDD)等,例如:牛郎織女景區的經緯度坐標如下:
  • 坐標轉換+經緯度導航 任我遊R600升級版全新超越
    合眾思壯推出的專業戶外導航產品任我遊R600升級版,在具備其除了卓越的野外性能外還增加了獨特的坐標系統轉換、經緯度導航功能,相信能夠給廣大戶外愛好者帶來一個更加美好的夏季。據合眾思壯相關負責人介紹,任我遊R600升級版坐標轉換功能的特色就在於不僅僅是可以實現二維、三維的轉換也可根據實際情況靈活決定採用何種形式轉換,適應使用者的不同系統,能使戶外導航操作更加簡單和精準。
  • Google地圖經緯度與平面坐標的相互轉換、簡單地圖Demo
    有了世界地圖我們現在來獲取指定城市的經緯度,根據一番查找找出了谷歌的api【http://maps.google.cn/maps/api/geocode/json?address=地址】其中地址可以是英文,也可以是url編碼後的中文。訪問(GET)該地址後獲得一些json數據,不出問題的話第33行的location數組就是經緯度數據。
  • 如何將Google地圖經緯度值導入ArcMap
    從Google地圖(或其他來源)上獲取經緯度坐標值2. 將經緯度坐標值整理寫入excel(其他方式也可)3. 利用ArcMap的工具導入經緯值文件(操作環境ArcMap 10)操作一:因現在無法直接獲取Google地圖點的經緯度坐標,暫時從感興趣點poi出發,逐一獲取,有些麻煩倒也可行!
  • 美團面試官問我如何查詢附近商家,我這樣說可以懟翻他!
    如果以0度經線為基準,那麼根據地球表面任意兩點的經緯度就可以計算出這兩點間的地表距離(這裡忽略地球表面地形對計算帶來的誤差,僅僅是理論上的估算值)。維基百科上找到了這樣的一張對應表:當有一個32位數字的時候,精細度大概是2500公裡,當有8個數字的時候,精細度大概是0.019km = 19米。也就是說,8個32位的數字 對應 8*5=40個二進位數,也就是經緯度分別劃20次,就可以達到19米的精細度。
  • 【複習專題】地球經緯網
    地球經緯網目 錄考點一 經緯線和經緯度的判斷考點二 經緯網上方向的判斷考點三 經緯網上距離計算考點四 經緯線和經緯度的判斷【例1】 (高考經典題)下圖是經緯網圖層和中國省級行政中心圖層的疊加圖,圖中經緯線間隔度數相等。讀圖,回答下題。
  • 答疑精選 | 在手機APP上怎麼查經緯度坐標?
    答疑精選 |  作者 /  Gary  整理  /  白水用戶「魏振宇」的疑問在手機APP上怎麼查經緯度坐標?目標位置在顯示的「符號屬性」界面中,會顯示當前標註位置的經緯度坐標,如下圖所示。查看坐標總結在微圖APP中需要查看某個位置的坐標時,只需要在目標位置進行快速標註點,然後即可查看該位置的經緯度坐標。
  • 怎麼把在谷歌地球上畫的路線圖導出經緯度來
    3、保存好之後我們把後綴名改為TXT記事本形式,然後把除了經緯度的內容都刪除,如下圖所示:4、這樣我們就提取了經緯度了,但是還不行,這還不可以做軌跡圖,現在我們還需要他這些標準化,我們先用EXCEL打開(注意打開的時候分割符號是逗號),但是發現是下面這種格式,不止只有一行,而且後面的經度都有0和空格。
  • 10W*10W級的經緯度距離查找只要十幾秒!
    10W*10W級的經緯度距離查找只要十幾秒!(目前我還沒體驗過比我這個快的).1、最近站點查找;2、指定範圍內站點查找;3、按照由近遠查找topN站點並排序;4、小特性:運行進度條及估時間(大概耗時一目了然)、中途隨時退出(不愛了或手抖就不要浪費時間)、自動忽略錯誤並保存錯誤經緯度信息(毛手毛腳弄的經緯度是時候修正一下了)。
  • 計算兩個經緯度之間的距離(python算法)
    1、計算A,B兩個經緯度之間的距離   公式:其中:    lon1:為A
  • 用Google地圖獲取地圖上某點的經緯度坐標
    這裡小編向大家介紹一個Google地圖獲取地圖上某點的經緯度坐標的方法,十分簡單。 我們有時候想獲取地圖上某一坐標點的經緯度,但是找了很多在線地圖,發現要實現這個功能還很麻煩。
  • 【今日回答】經緯度距離計算@趙趙趙妹媚
    同一經線上,緯度每一度的間距是111km同一緯線上,每一經度的間距是用111乘以緯度數的餘弦值算兩地的實地距離時,可以用勾股定理在地球儀上,與赤道相平行的圓就是緯線緯度每差1度,距離相差110千米在地球儀上,連接南北兩極點的半圓就是 經線經度每差1度的實地距離是:110千米*cosa其中
  • 微信附近的人,用redis也能實現?(GEO)
    獲取自己的位置附近的人其實就是一種位置的比對關係,所以第一步是得獲取自己的位置,一般位置都是用經緯度來表示,具體經緯度的獲取得依賴客戶端,作為咱們後端程式設計師直接接收參數就可以了,所以這一步重點是用經緯度來表示各個節點的位置,對經緯度不是很了解的朋友可以複習一下中學的地理知識。