SQL如何search gps?

MySQL入面有一個table, 記錄左好多GPS座標

例如
id, lat, lng, name
1, 23.795398, 22.324219, Building A

而家我用google map show左一個區域出黎
希望將依個區域內, 在我DB入面有既座標pin晒出來

句SQL點寫先可以search到2D資料?

你要用program計左個2d area再放入sql做search

via HKEPC Reader for Android

TOP

咁個2d area係咩樣? 一個特別type?
sql淨係食text同數字

TOP

可以睇睇
http://stackoverflow.com/questio ... sql-or-complex-calc

主要係數學上既計算, 睇你想用方法

TOP

咁個2d area係咩樣? 一個特別type?
sql淨係食text同數字
3ldk 發表於 2016-11-1 15:25


首先,嗰個唔係GPS 座標,係座標
第二,你呢個唔係SQL問題,而係GOOGLE MAP 嘅問題
你嘅問題係問緊點解先可以拎到GOOGLE MAP 範圍嘅INFO
同埋如果有,會係咩型式
如果無嘅話,你就要用另外嘅方法搵

基本上無論咩型式都好,因為你DB 係儲左lat 同long,你要再自己諗方將個AREA 轉做LONG LAT,再自己諗方法點SEARCH

我諗到嘅其中一個方法係將嗰個AREA 俾一個長方形包住,再用嗰四個數放入QUERY 度SEARCH
你會搵到嘅LOCATION會係呢個AREA 嘅SUPER SET,再用GOOGLE MAP POLYGON個containsLocation()睇下係咪喺入面

PS: 無用過GOOGLE MAPS,,亦都無做過類似嘅嘢,只係簡單SEARCH左幾下,是但諗左個方法,你可以睇下係咪可行

TOP

應該就咁 retrieve map 嗰四角,再 x < xMax & x > xMin 之類大細 operator 就搞掂?

定我諗得太簡單?

TOP

如果個area係長方形,冇傾斜,易搞
where x<=xMax && x>=xMin && y<= yMax && && y>= yMin
如果個area係其他形狀,或者打斜嘅長方形,就要做少少幾何運算
畀個簡單例子你
例如你有個直角三角形,三點係0,1 1,0 0,0
即係底邊係y=0,高係x=0,斜邊係x+y=1
咁即係三個constraint
x>0
y>0
x+y<1
滿足晒三個條件就係喺三角形入面。

TOP

師兄個計法係 Point within Rect.  但更常嘅問題係 line within view port

所以, 要複雜啲
where  // x part
            ( (x1 between xMin and xMax)  // x of point 1 within viewport
        or   (x2 between  xMin and xMax)  // x of point 2 within viewport
        or (min(x1, x2) < xMin and max(x1,x2) > xMax)     // line is crossing view port
    // y part
   and  ( (y1 between yMin and yMax)
        or   (y2 between  yMin and yMax)
        or (min(y1, y2) < yMin and max(y1,y2) > yMax)


或者簡單啲, 用
where not
      (
         ( (x1 < xMin and x2 < xMin)    // x is out of view port
            or (x1 > xMax and x2 > xMax)
            )
     and ((y1 < yMin and y2 < yMin)   // y is out of view port
            or (y1 > yMax and y2 > yMax)
            )
     )

TOP

畫圖一般應該係圓/弧同直線, 圓/弧要計得準會好慢, 夾硬當佢係4/8/16邊型, 可能會易啲.  

如果 viewport 係圓就更簡單  distance(obj.center, vp.center) < obj.r + vp.r.   
4方型就要做多啲功夫啦

TOP

老老實實
倒轉,用Google Maps API (js) 將你全部point塞晒入去Google Maps先,可能仲好...

TOP