sql

在需要顯示地圖與相關地點的 app 中,非常常見這樣子的應用:列出周圍的店家、並依照距離來排序
解法如下:MySQL Great Circle Distance (Haversine formula)

裡面指向了一個 Google 的文件,其中包含一段 SQL 語法,概念上是用大圓航線來做距離的計算:

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;

p.s.:

  1. 3959 是以 mile 為單位的常數,若要以 km 計,請替換成 6371
  2. (37, -122) 是你傳入的位置
  3. (lat, lng) 是 database 裡面,經緯度的 column name
  4. markers 是 database 的 table name

Comments

comments powered by Disqus
Copyright © 2013 Andro Chen
Powered by Logdown and Greyshade
Favicon from The Noun Project