Mapsforge重写:长按Map上下文菜单

时间:2013-11-30 18:33:44

标签: android contextmenu openstreetmap long-press

我正在使用mapsforge库在我的应用中使用地图。我需要启动一个上下文菜单并返回地图坐标。这是我尝试过的。在我的布局中,我在mapview下方设置了一个隐藏按钮,用于监听longpress。

<LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical" >

        <org.mapsforge.map.android.view.MapView
            android:id="@+id/offlinemapview"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent" />

        <Button
            android:id="@+id/mapview_btn_offline"
            android:layout_width="match_parent"
            android:layout_height="match_parent" />
    </LinearLayout>

然后我正在注册上下文菜单的这个按钮,并为上下文菜单充气。

mapb = (Button) findViewById(R.id.mapview_btn_offline);
registerForContextMenu(mapb);

  @Override
    public void onCreateContextMenu(ContextMenu menu, View v,
            ContextMenuInfo menuInfo) {
        super.onCreateContextMenu(menu, v, menuInfo);
        MenuInflater inflater = getMenuInflater();
        inflater.inflate(R.menu.map_menu, menu);
    }

但是当我运行应用程序时,即使在长按后,上下文菜单也没有显示出来。关于如何使这个工作的任何想法?

1 个答案:

答案 0 :(得分:1)

实际上mapview类是ViewGroup的扩展类。 你应该做以下事情:

1.在mapsforge中更改OnTouchEvent。 MotionEvent会为您提供一些操作。 2.定义一个计时器,以保持touch_down和touch_up之间的时间或取消。 3.由您来决定如何实施备件......