2011-01-14 4 views
0

私のアプリケーションでは、選択した長いクリックポイントの座標をとり、オプションのセットを表示するMapView上にコンテキストメニューを実装する必要があります。 コンテキストメニューのMapActivityを登録してからoncreatecontextmenuメソッドをオーバーライドしようとしましたが、longclickイベントが発生しないようです。 (例えば、私はddmsに表示されないoncreatecontextmenuメソッドにいくつかのログを入れます)MapViewまたはその他のソリューションのコンテキストメニュー

私はウェブとAndroidのドキュメントで検索しましたが、満足できるものは何も見つかりませんでした。 MapViewでコンテキストメニューを作成することは本当に不可能ですか? もしそうなら、同様のものを実装する方法はありますか?以下を試し発生しません

public class ChoosePosition extends MapActivity { 
MapView mappa; 
MapController mapCtr; 

LocationManager locManager; 
LocationListener locLstn; 
Location myLastLoc; 
String locProvider; 

double mylat, mylongi; 

/** Called when the activity is first created. */ 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.chooseposition); 


    locManager = (LocationManager)getSystemService(LOCATION_SERVICE); 



    locLstn = new MyLocationListener(); 


    locManager.requestLocationUpdates(
    LocationManager.GPS_PROVIDER, 
    2000, 10, 
    locLstn); 

    mappa = (MapView) findViewById(R.id.map2); 
    mappa.setLongClickable(true); 

    mapCtr = mappa.getController(); 

    // attiviamo lo zoom integrato 
    mappa.setBuiltInZoomControls(true); 

// getting last known location 
    myLastLoc = locManager.getLastKnownLocation(LocationManager.GPS_PROVIDER); 
    GeoPoint point; 
    if (myLastLoc == null) { 
     mylat = myLastLoc.getLatitude(); 
     mylongi = myLastLoc.getLongitude(); 
     // trasformiamo l'ultima posizione in un GeoPoint 
     point= new GeoPoint((int) (myLastLoc.getLatitude() * 1E6), 
       (int) (myLastLoc.getLongitude() * 1E6)); 

    } 


    // setting center and zoom 
    mapCtr.setCenter(point); 
    mapCtr.setZoom(17); 



    // adding an overlay 
    MyLocationOverlay myLocationOverlay = new MyLocationOverlay(); 
    mappa.getOverlays().add(myLocationOverlay); 

     registerForContextMenu(mappa); 


} 



@Override 
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) { 
      Log.i("MYINFO", "I'm in"); 
    menu.add(Menu.NONE, 0, Menu.NONE, "First option"); 

} 

@Override 
public boolean onContextItemSelected(MenuItem item) { 
    return true; 
    } 

答えて

3

長いクリックイベントとして: は、私は(簡単な)コードを掲示しています。

オーバレイクラスを作成し、onTab()メソッドをオーバーライドします。このメソッド内では、openContextMenu()メソッドを呼び出します。地図上をタップするとコンテキストメニューが開きます。

+0

私はonTapの代わりに、ポインタが動いているかどうかを示すフラグでonTouchEventのメソッドをオーバーライドしました。そうでない場合、イベントACTION_UPがイベントACTION_DOWNの1秒後にあった場合、私はopenContextMenuメソッドを呼び出しました。 – breathe0

+0

だから、ありがとう男! – breathe0

+0

あなたは大歓迎です!はい、もちろん私はタップ()を意味しました! ;) – Flo

関連する問題