關于根據經緯度計(jì)算(suàn)距離(lí↑α)的(de)一(yī)點心得(de)
關鍵mysql語句(根據π✔需要(yào)可(kě)直接使用(yòng)):
select *,(6378.> 138 * 2 * asin(sqrt(pow(sin((".↓$weidu." * pi() / 180 - weidu * ∑£βpi() / 180) / 2),2) + cos×®↓$(".$weidu."φε * pi() / 180) * cos(weidu * pi() / ¶↕♦•180) * pow(sin((".$jing ₽du." * pi() / 180 - j$✔Ωingdu * pi() / 180) / 2),2))) * 1∏↔000) AS distance FROM `wts_restaura₽✘®nt` ORDER BY distance &∏★ nbsp;limit $offset ,$page<$size;
語句中的(de)$weidu,$jingdu為(w↑σσ§èi)已知(zhī)點的(de)緯度和(hé)經度,weid©u、jingdu為(wèi)數(shù)據庫中的(de)字段
根據經緯度計(jì)算( ✔∞suàn)兩點間(jiān)距離(lí)公式(<★γ單位米)
第一(yī)點經 緯度:lng1 lat1
第二點經緯度:lng2 §€lat2
round(6378.138*2*asin(sqr★λ↓δt(pow(sin( (lat1*pi()/180-lat2*pi()/₩₩♦180)/2),2)+cos(lat1*pi()/180)*cos(lσ®¥at2*pi()/180)* pow(s'≠♦₽in( (lng1*pi()/180-lng2*pi(π∑∏)/180)/2),2)))*1000)
例子(zǐ):
已知(zhī)一(y§ε<¥ī)個(gè)點的(de)經度:114.173881 緯度:22.'★299439
數(shù)據庫中存的(de)經度字段≤€±名稱:lng 緯度字段名稱:lat
select store_id,'lng,lat, ROUND(6378.138*2*φ≥ASIN(SQRT(POW(SIN((22.299439*PI¥♦©()/180-lat*PI()/180)/2)©•,2)+COS(22.299439*PI()/180)*&≤÷±COS(lat*PI()/180)*POε↑λ∏W(SIN((114.173881*PI()/180-lng*PI()/1™≠80)/2),2)))*1000) AS∞ juli
FROM store_info
ORDER B≠ε♥Y juli DESC
LIMIT 316