【发布时间】:2011-01-14 18:58:30
【问题描述】:
我需要在我的应用程序中在 MapView 上实现一个上下文菜单,该菜单获取所选长按点的坐标并显示一组选项。 我尝试为上下文菜单注册 MapActivity,然后覆盖 oncreatecontextmenu 方法,但 longclick 事件似乎没有触发。 (例如,我在 oncreatecontextmenu 方法中添加了一些日志,这些日志从不显示在 ddms 上)
我在网上和 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;
}
【问题讨论】:
标签: android contextmenu android-mapview