2011-06-22 74 views
0

我需要在MapView上有一個覆蓋圖,當用戶單擊覆蓋項目(小針)時,我會顯示一個氣球標註,但是當用戶在MapView上的其他位置單擊時,它將刪除覆蓋並添加一個新的覆蓋在接觸位置。我在MapView上設置了OnTouchListener,因此我可以檢測到觸摸,但是如何區分疊加層上的觸摸和觸摸?如何區分MapView及其疊加層上的觸摸?

謝謝!

+0

所以,你想彈出應該被刪除點擊外彈出?? ?? – Sujit

+0

是的,另外,我希望能夠拖動覆蓋層,謝謝! – hzxu

回答

2

那麼,我建議你使用onTap(int index)方法,但只有當用戶點擊OverlayItem時纔會觸發它。所以,你的情況應該結合和Ontap()和的onTouchEvent()方法,像這樣:

@Override 
protected boolean onTap(int index) { 
    selectedItem = items.get(index); 
    Toast.makeText(context, "BooM!", 
       Toast.LENGTH_SHORT).show(); 
    return true; 
} 

@Override 
public boolean onTouchEvent(MotionEvent event, MapView mapView) { 
    selectedItem = null; 
    return false; 
} 

您可以看到使用調試器,如果你點擊你的項目 - 你是在中的onTap(),如果不是 - 你在onTouchEvent()。 當然,您應該重寫onDraw()方法來繪製氣球。