我想在Android Google地图V2中长按鼠标时显示上下文菜单,但是:
openContextMenu(View view)方法需要一个视图,我不知道要传递什么。 我试着像这样调用这个方法:
openContextMenu(findViewById(R.id.map));
但上下文菜单无法打开。
请帮帮我:P
答案 0 :(得分:1)
关于长按,我怀疑你运气不好。
关于openContextMenu()
,您需要在致电registerForContextMenu()
之前致电View
上的openContextMenu()
。
请注意,上下文菜单已经过时了几年,支持上下文操作栏(a.k.a.,action mode)。
答案 1 :(得分:1)
从3.1.36开始,这里的问题无法实现长时间点击监听。
一种hackish方式是使用附加的OnTouchListener对地图片段进行透明视图,在此处保存触摸事件时间并返回false。
如果稍后您拨打GoogleMap.OnMarkerClickListener.onMarkerClick
,则可以确定这是长时间还是正常点击。
要获得正确的方法,我们需要在API中设置OnMarkerLongClickListener
,您可以在gmaps-api-issues上提交功能请求。
如果你有其中一个,你可以只显示一个带有选项的对话框,但正如CommonsWare所说,这不是最漂亮的方式。我建议通过更改图标和显示动作来选择标记,但这是您的选择。
答案 2 :(得分:1)
看看这个页面:
https://developers.google.com/maps/documentation/android/infowindows
您必须引用标记的InfoWindow来执行您需要的操作,因为有一个OnInfoWindowClickListener()您将处理信息的click事件,这是与标记点击不同的事件。 解决缺少OnMarkerLongClickListener()的聪明方法。
我希望你能帮忙
答案 3 :(得分: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;
}