【发布时间】:2011-12-30 08:22:59
【问题描述】:
我被这个困住了,我尝试了所有的可能性,但没有成功。我已经创建了带有地图的简单应用程序进行测试,用户可以简单地触摸地图并在那个地方放置标记。这将在除 htc 设备之外的所有设备中成功运行。我不知道怎么实现mapview的onTouch事件
这是我的 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。
-
我已尝试返回 true,但地图移动已停止
-
很明显是的,如果您跟踪从 ACTION_DOWN 到 ACTION_UP 的整个触摸手势。还有可用的 Overlay.onTap(..) 事件,您是否考虑过使用它来添加标记?
-
是的,使用 onTap 就可以了,谢谢 harism
标签: android google-maps marker