【问题标题】:How can I show context menu when a marker is long clicked?长按标记时如何显示上下文菜单?
【发布时间】:2013-06-15 17:03:34
【问题描述】:

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

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

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

但是上下文菜单没有打开。

请帮帮我:P

【问题讨论】:

  • “标记”是什么意思?
  • 不幸的是,由于缺乏在 android 上使用 Google 地图的经验,我没有任何直接的答案,但我认为您应该以某种方式处理地图上的触摸事件。也许this链接会帮助你
  • 还有一个关于标记的重要信息,如文档所述。如果标记是可拖动的,那么它可以在长按后拖动,这与您想要实现的行为相冲突,所以您应该调用setDraggable(false) 以按您的方式处理长按它

标签: android contextmenu google-maps-markers google-maps-android-api-2


【解决方案1】:

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

对于openContextMenu(),您需要先在View 上调用registerForContextMenu(),然后再调用openContextMenu()

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

【讨论】:

    【解决方案2】:

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

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

    如果稍后您的GoogleMap.OnMarkerClickListener.onMarkerClick 被调用,您可以决定这是长时间点击还是正常点击。

    我们需要在 API 中添加 OnMarkerLongClickListener,以便您可以在 gmaps-api-issues 上提交功能请求。

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

    【讨论】:

      【解决方案3】:

      看看这个页面:

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

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

      希望你能帮忙

      【讨论】:

        【解决方案4】:

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

        @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;
            }
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2016-03-31
          • 1970-01-01
          • 1970-01-01
          • 2014-05-04
          • 2010-09-21
          • 2022-11-13
          相关资源
          最近更新 更多