2011-05-13 25 views
1

現在、Googleマップに一連のマーカーがあります。地図上でどこからでも緯度と経度を取得できるようにしたいので、マーカーをすばやくクリックするとメッセージボックスのダイアログを開きたいと考えています。私の問題は、longpressを動作させるように設定することによって、longclickのときにonTap関数が呼び出されるようにすることです。私がマーカーをクリックしていないときにのみ、longlickが機能することは可能ですか?私はlongpressを必要としないが、他のイベントに対してlongpressを有効にしたonTapを行うことはできますか?

@Override 
public boolean onTouchEvent(MotionEvent event, MapView mapView) 
{ 

    return gestureScanner.onTouchEvent(event); 
    //return false; 
} 

//////////////////////////////////// 
// Handle the clicking of a marker 
// 
//////////////////////////////////// 
@Override 
protected boolean onTap(int index) 
{ 
    System.out.println("OnTap"); 
    OverlayItem item = mOverlays.get(index); 
    int localLat = item.getPoint().getLatitudeE6(); 
    int localLong = item.getPoint().getLongitudeE6(); 
    AlertDialog.Builder dialog = new AlertDialog.Builder(mContext); 
    // Get the titles 
    dialog.setTitle(item.getTitle()); 

    // Get the text for the message 
    //dialog.setMessage(item.getSnippet()); 
    dialog.setMessage("Latitude: " + localLat + "\nLongitude: " + localLong); 
    dialog.setNeutralButton("Ok", new DialogInterface.OnClickListener() 
    { 
     public void onClick(DialogInterface dialog, int which) 
     { 
      // TODO Auto-generated method stub  
     } 
    }); 
    dialog.show(); 
    return true; 
} 

@Override 
public void onLongPress(MotionEvent e) 
{ 
    long downTime = e.getDownTime(); 
    System.out.println("Down time: " + downTime); 
    System.out.println("LongPress Registered"); 
    GeoPoint p = localMapView.getProjection().fromPixels((int) e.getX(), (int) e.getY()); 
    System.out.println("Latitude = " + p.getLatitudeE6() + " Longitude: " + p.getLongitudeE6()); 
} 

答えて

0

はここで役に立つかもしれませんhere似たようなのです。オーバーレイのonTouchEvent()をオーバーライドして、それぞれを処理することもできます。

+0

私はonTouchEvent()をオーバーライドしていますが、それはGestureDetectorを設定するためです。 onTapイベントを自然に発生させる方法はありますか?これはすべてItemizedOverlayに基づいています。より良いコンセプトのために秒単位でコードを投稿する。 – Geeklat

+0

LongPressを押した座標を表示しているように見えるので、それを処理する別のオーバーレイにLongPressを移動することはどうでしょうか?一度に複数のオーバーレイを持つことができます。 GestureDetector.SimpleOnGestureListenerを使用するだけで、LongPressメソッドを実装するだけで、ItemizedOverlayからGestureDetectorを削除することができます。 – dbryson

関連する問題