0

当我在 Android Google Maps V2 中长按标记时,我想显示一个上下文菜单,但是:

  • 标记不处理长点击事件。
  • openContextMenu(View view) 方法需要一个视图,我不知道要传递什么。我试图这样调用该方法:

    openContextMenu(findViewById(R.id.map));
    

但上下文菜单未打开。

请帮助我:P

4

4 回答 4

1

看看这个页面:

https://developers.google.com/maps/documentation/android/infowindows

您必须参考标记的 InfoWindow 来执行您需要的操作,因为有一个 OnInfoWindowClickListener() 您将处理信息的单击事件,这是与标记单击不同的事件。解决缺少 OnMarkerLongClickListener() 的巧妙方法。

我希望你能帮忙

于 2013-09-25T15:38:25.863 回答
1

关于长按,我怀疑你运气不好。

关于openContextMenu(),你需要在调用registerForContextMenu()之前View调用openContextMenu()

请注意,上下文菜单已经过时了几年,取而代之的是上下文操作栏(也称为操作模式)。

于 2013-06-15T17:14:36.780 回答
1

从 3.1.36 开始,这里的问题是没有办法让长点击监听器。

一种骇人听闻的方法是在附加了 OnTouchListener 的地图片段上具有透明视图,您可以在其中保存着陆事件时间并返回 false。

如果稍后您接到GoogleMap.OnMarkerClickListener.onMarkerClick电话,您可以决定这是长按还是正常点击。

对于我们需要OnMarkerLongClickListener在 API 中使用的正确方法,您可以在gmaps-api-issues上提交功能请求。

当您拥有其中一个时,您可以只显示一个带有选项的对话框,但正如 CommonsWare 建议的那样,这不是最漂亮的方式。我建议通过更改图标和显示操作来选择标记,但这是您的选择。

于 2013-06-15T20:59:12.160 回答
0

您总是可以在添加标记时将其定义为某物,例如:

@Override
    public void onMapLongClick(LatLng point) {

        map.clear();
        myMarker = map.addMarker(new MarkerOptions().position(point));
        Log.d("Devon", "Lat: " + point.latitude + " Lng: " + point.longitude);
    }

然后在调用 onMarkerClick 方法时,如果点击的标记等于定义的标记,则执行代码:

@Override
    public boolean onMarkerClick(Marker marker) {

        if (marker.equals(myMarker)) {
            Toast.makeText(this, "Add 'Directions to here' and 'Directions From here' buttons.", Toast.LENGTH_LONG).show();
        }
        return true;
    }
于 2014-12-24T19:36:50.427 回答