2012-05-28 33 views
0

我正在應用程序中使用喜歡的站點列表填充MapView。 現在,我擁有MapView中的所有標記,但我想在這些標記上做一個事件,當我按下其中一個標記時,啓動另一個活動。標記中的事件

我嘗試做一個onTouch事件,獲取X和Y座標,然後在數據庫中檢查這個GeoPoint是否存在,但是這是不可能的,因爲它檢查'cos是非常精確的,並且有很多小數,很難像我在數據庫中那樣獲得相同的結果。

問題是:有沒有辦法在這個標記中做一個事件?

回答

1

對於「喜歡的網站列表」,假設網站數量適中,ItemizedOverlay是典型的疊加層。如果您正在使用該功能,只需覆蓋提供用戶點擊的特定標記索引的onTap()

如果您正在使用Overlay代替ItemizedOverlay,你可以找到最接近用戶的敲擊座標在數據庫中的項目,使用這樣的事情:

SELECT MIN(ABS(Latitude - ?) + ABS(Longitude - ?)), _ID FROM Sites GROUP BY _ID LIMIT 1; 
,您提供您的經度和緯度爲

兩個元素String[]rawQuery(),並根據需要調整列名稱。請注意,我沒有親自嘗試過此查詢,因此可能會出現轉換爲SQLite的問題。

(來自T-SQL: Finding the closest location of an object on a map grid派生)

+0

這是ItemizedOVerlay類我的方法的onTap: –

+0

保護布爾的onTap(INT指數){ \t \t字符串etiqueta = mOverlays.get(指數).getTitle(); \t \t Toast.makeText(context,etiqueta, \t \t Toast.LENGTH_LONG).show(); \t \t return true; \t} \t當我點擊時沒有發生任何事情--- –

+0

這是一個支持'onTap()'的示例應用程序,它的工作原理如下:https://github.com/commonsguy/cw-android/tree/master/Maps/NooYawk – CommonsWare