[英]How to get distance in kilometer when pass in 2 value (langtitude and longitude) in mysql?
我在mysql調用BRANCH中有一個表
===============================
Branch_id latitude longitude
===============================
1 3.109421 101.622913
2 3.101121 101.644913
當我傳遞當前位置的緯度/經度時,如何從該表中選擇公里計算?
例:
如果我通過當前位置= 3.122221 101.343913
============================================
Branch_id latitude longitude distance(km)
============================================
1 3.109421 101.622913 0.4
2 3.101121 101.644913 0.6
編輯(已解決):
SELECT p.title,p.subtitle,p.desc,p.image,p.promotion_id,p.merchant_id,p.date_from,p.date_to,m.merchant_name,p.view,mb.latitude,mb.longitude,
(6371 * acos (cos( radians(3.158704)) * cos( radians(mb.latitude))
* cos( radians(mb.longitude) - radians(101.713963)) + sin(radians(3.158704))
* sin( radians(mb.latitude)))) AS distance
FROM merchant_branch as mb
left join merchant m on mb.merchant_id = m.merchant_id
left join promotion p on p.merchant_id = m.merchant_id
where p.promotion_id is not null order by distance asc
來自: https : //developers.google.com/maps/solutions/store-locator/clothing-store-locator
這是一條SQL語句,可在距-33,151坐標25英里的半徑內找到最接近的20個位置。 它根據該行的緯度/經度和目標緯度/經度計算距離,然后僅查詢距離值小於25的行,按距離對整個查詢進行排序,並將其限制為20個結果。 要按公里而不是英里進行搜索,請將3959替換為6371。
SELECT id, ( 3959 * acos( cos( radians(37) ) * cos( radians( lat ) ) * cos( radians( lng ) - radians(-122) ) + sin( radians(37) ) * sin( radians( lat ) ) ) ) AS distance FROM markers HAVING distance < 25 ORDER BY distance LIMIT 0 , 20;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.