私はこれに固執しています。私はテスト用のマップで簡単なアプリケーションを作成し、ユーザーはマップ上で簡単に触れることができ、その場所にマーカーを置くことができます。これは、htcデバイスを除くすべてのデバイスで正常に動作します。私は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);
}
}
をチェックドロップのために私はあなたが常にsuper.onTouchEvent(..)を返すようにあなたのonTouchEvent(..)でマイナーな欠陥があると思います。ドキュメントで述べたように、タッチイベントを処理する場合はtrueを返す必要がありますが、デフォルトの実装ではfalseを返す以外は何もしません。 – harism
私は真実を返そうとしましたが、地図の移動は止まっていました – Pratik
ACTION_DOWNからACTION_UPまでタッチジェスチャー全体を追跡すると、明らかにはいです。 Overlay.onTap(..)イベントもあります。マーカーを追加するためにそれを使用すると考えましたか? – harism