我對此堅持不懈,我嘗試了所有可能性,但沒有成功。我已經創建了簡單的應用程序與地圖進行測試和用戶可以簡單的觸摸地圖上,並在那個地方把標記。除了htc設備,這將在所有設備上成功運行。我不知道如何實現onTouch事件的MapViewmarker不能在htc的地圖上顯示
這裏是我的onTouch
private class MarkerOverlay extends Overlay{
private boolean isMove;
@Override
public boolean onTouchEvent(MotionEvent e, MapView mapView) {
final int x = (int) e.getX();
final int y = (int) e.getY();
if(e.getAction()==1){
if(!isMove){
geopoint = mapView.getProjection().fromPixels(x, y);
OverlayItem overlayItem = new OverlayItem(geopoint, "Title", "Description");
if(mapOverlay.m_overlays.size()>=1){
mapOverlay.clearOverlayAll();
}
mapOverlay.addOverlay(overlayItem);
if(!mapView.getOverlays().contains(mapOverlay))
mapView.getOverlays().add(mapOverlay);
mapView.invalidate();
Toast.makeText(SimpleMapMarkerActivity.this, "in press", Toast.LENGTH_SHORT).show();
}else{
Toast.makeText(SimpleMapMarkerActivity.this, "out press", Toast.LENGTH_SHORT).show();
}
}else if(e.getAction()==MotionEvent.ACTION_DOWN)
isMove = false;
else if(e.getAction()==MotionEvent.ACTION_MOVE)
isMove = true;
return super.onTouchEvent(e, mapView);
}
}
我認爲在你的onTouchEvent(..)一個小小的瑕疵,你總是返回super.onTouchEvent(..)。如文檔中所述,如果您處理觸摸事件,則應該返回true,而默認實現只會返回false。 – harism 2011-12-30 09:30:53
我嘗試返回true,但移動的地圖是停止 – Pratik 2011-12-30 10:11:07
很明顯是的,如果您從ACTION_DOWN跟蹤整個觸摸手勢,直到ACTION_UP。還有Overlay.onTap(..)事件可用,您是否考慮過使用它來添加標記? – harism 2011-12-30 10:15:10