2016-02-27 28 views
2

我對Android相當陌生,嘗試開發一個應用程序,用於識別用戶的位置是否位於狀態內給定區域的內部或外部。我的方法是採取用戶的latlng並使用光線投射來識別它們在哪個區域(它們必須在1內)。我的地區最好等同於州立公園線,但Google在Google地圖中沒有這些地區(對於地理圍欄來說它們太不規範)。因此,我創建了客戶多邊形。我沒有爲代碼苦苦掙扎,而是在處理數據的最佳方式中掙扎。用於在Android和光線投射中存儲自定義地圖多邊形的最佳技術

如何存儲和訪問光線投射的多邊形數據?我正在採用將多邊形存儲在XML文件中的方法,但我擔心可能需要的時間和處理能力來解析XML並在給定狀態下跨多達30個多邊形運行光線投射。我的多邊形足夠複雜,以至於一個狀態的XML文件大於4MB。我的多邊形只需要閱讀,而不是書面,因爲它們將隨應用程序一起提供。

回答

0

我認爲你最好的選擇是存儲你的多邊形是一個地理數據庫。目前爲止我發現的最佳解決方案是SpatiaLite,它是通過SQLite構建的,在Android上運行得非常好。

使用這種方法,您將存儲多邊形到數據庫中,並查詢與給定的LatLng(Point)相交的多邊形。查詢將看起來像這樣(未測試):

select * from polygons_table where st_intersects(Geometry, MakePoint(longitude, latitude, 4326)); 

請注意,我用4326作爲SRID,因爲我認爲你將你的多邊形存儲在WGS84。

Here你可以找到SpatiaLite 3.0.0-BETA SQL函數參考列表

相關問題