2011-12-30 17 views
0

私はこれに固執しています。私はテスト用のマップで簡単なアプリケーションを作成し、ユーザーはマップ上で簡単に触れることができ、その場所にマーカーを置くことができます。これは、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); 
    } 
} 
+0

をチェックドロップのために私はあなたが常にsuper.onTouchEvent(..)を返すようにあなたのonTouchEvent(..)でマイナーな欠陥があると思います。ドキュメントで述べたように、タッチイベントを処理する場合はtrueを返す必要がありますが、デフォルトの実装ではfalseを返す以外は何もしません。 – harism

+0

私は真実を返そうとしましたが、地図の移動は止まっていました – Pratik

+1

ACTION_DOWNからACTION_UPまでタッチジェスチャー全体を追跡すると、明らかにはいです。 Overlay.onTap(..)イベントもあります。マーカーを追加するためにそれを使用すると考えましたか? – harism

答えて

0

マップをタップしてマーケットを表示してから、onTap(GeoPoint g, MapView mapview)を実装するようにマップします。

ドラッグアンドドロップのようにユーザーが移動するようにマーカーを実装する場合は、onTouch()を使用して実装します。 onTouch()とドラッグのようなマーカーを移動すると、このリンク

http://www.edumobile.org/android/android-apps/mapmarkerexample/

0

のための私のコード私は同じ問題を抱えていたがあるためonTouchイベントを実装する方法がわかりません。それがあなたの問題を解決できるかどうかはわかりません。しかしここに私がしたことがあります:

私はdispatchTouchEventをオーバーライドしました。私のSamsung Galaxy s2で動作します。

@Override 
public boolean dispatchTouchEvent(MotionEvent ev) { 
    // TODO Auto-generated method stub 
    if(ev.getAction() == MotionEvent.ACTION_DOWN){ 
     xPos = ev.getX(); 
     yPos = ev.getY(); 
    } 
    if (ev.getAction() == MotionEvent.ACTION_UP){ 
     if (xPos==ev.getX() && yPos == ev.getY()){ 
     Log.i(LOG_TAG, "Calling onTouch from dispatchTouchEvent."); 
      onTouch(mapView, ev); 
     } 
    } 
    return super.dispatchTouchEvent(ev); 
} 

これはマップアクティビティで行います。オーバーレイではありません。

0

MapMarkerExample

この例では、マップ上へ移動マーカーを描画する方法を示しています。マーカーをドラッグ&ドロップして位置を変更することができます。地図の場所をユーザーから入力する必要のあるアプリケーションで使用できます。

アルゴリズム:

1)[ファイル]で新しいプロジェクトを作成>新規 - > Androidのプロジェクト名、それMapMarkerExample。 2.)main.xmlおよびAndroidマニフェストファイルにデフォルトのコードがいくつか表示されます。 3)マニフェストファイルにインターネットのアクセス許可を追加するか、android.manifestファイルに次のように書く:あなただけでマーカーを実装するたびに、私はharism

によって与えられる解決策、この溶液を得た

http://www.edumobile.org/android/android-apps/mapmarkerexample/

+0

私はこの例を持っていますがこれでも不運 – Pratik

関連する問題