Я застрял в этом, я пробовал все возможности, но не успел. Я создал простое приложение с картой для тестирования, и пользователь может просто коснуться карты и на этом месте поставить маркер. Это будет успешно работать на всех устройствах, кроме устройств htc. Я не знаю, как реализовать onTouch событие для MapViewмаркер не отображается на карте в 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, если вы обрабатываете событие touch, тогда как реализация по умолчанию делает не что иное, как возвращает false. – harism
Я постараюсь вернуть true, но перемещение карты было остановлено – Pratik
Совершенно очевидно, что да, если вы отслеживаете весь жест касания от ACTION_DOWN до ACTION_UP. Есть также событие Overlay.onTap (..), вы считали, что используете его для добавления маркеров? – harism