簡體   English   中英

當在MySQL中傳遞2值(經度和緯度)時,如何獲取以千米為單位的距離?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM