2012-11-28 32 views
0

我正在Android上開發Google Maps應用程序。我有一些GeoPoints,通過將它們作爲OverlayItems添加到ItemizedOverlay來顯示。這適用於顯示它們,並在點擊它們時調出一個漂亮的框,但是我試圖將信息放入框中。識別觸發onTap調用的GeoPoint

因此,我將ItemizedOverlay擴展爲我自己的類,並且我重寫了onTap (final GeoPoint p, final MapView mapView)。起初,我認爲這將是非常簡單的,因爲其中一個參數是GeoPoint,所以我會確切知道哪個GeoPoint被點擊。但是,從我所知道的情況來看,GeoPoint的論點是用戶實際觸摸到的GeoPoint。鑑於用戶可以觸摸的範圍,並且仍然觸發onTap,那麼GeoPoint對於準確瞭解哪個GeoPoint實際上已被觸摸並不是很有幫助。

我目前正在檢查參數GeoPoint對所有我現有的GeoPoints並查看它最接近。這看起來像一個超級哈克抽象倒置。有沒有更好的方法來知道實際被挖掘的內容?

回答

1

相反的onTap (final GeoPoint p, final MapView mapView)你應該覆蓋的方法:

@Override 
protected boolean onTap(int index){ 
    //you code here 
} 

其中index將指向您的權利OverlayItem

問候。

+0

我重寫onTap(int index)和onTap(最終GeoPoint p,最終MapView mapView),並使用日誌,索引之一永遠不會被調用。有沒有辦法讓這個被調用呢? – akroy

+0

處理觸摸事件的回調如果處理了觸摸事件,則應返回「true」,並且不會進一步調度。如果返回「false」,則該觸摸未被處理,並將被分派給其他回調或視圖。所以,就你的情況而言,如果你不需要,只需刪除一個'onTouch',或者在被調用的第一個中返回false。 – Luis

+0

太棒了,非常感謝!爲了節省那些最後一點研究的其他人,在將OverlayItems編入索引之後,getPoint實際上將從OverlayItem中提取一個GeoPoint。 – akroy