使用Google Play Services 6.5,对SupportMapFragment和MapFragment进行了各种更新,包括自动添加地图工具栏,这是一个小条,当您点击标记时会显示,如下所示:
http://android-developers.blogspot.com/2014/11/google-play-services-65.html
对于我的应用程序,我使用我自己的地图覆盖地图OnMarkerClickListener,以便我可以处理一些自定义内容,包括覆盖相机捕捉到标记位置的默认行为。
当我覆盖地图OnMarkerClickListener时,我发现这反过来会覆盖用户单击标记时地图工具栏自动显示的默认行为。我的问题是,我可以以某种方式导致此工具栏在我的自定义OnMarkerClickListener中自动显示,或者我基本上会丢失工具栏功能,因为我重写了标记点击?
答案 0 :(得分:2)
只要您return false
中的OnMarkerClickListener()
,就会显示工具栏。我还在我的示例应用程序中测试了它,当我返回false时显示botom工具栏,当我返回true时它不会显示工具栏。
根据OnMarkClickListener()引用,如果侦听器已经使用了事件,则为true(即,不应发生默认行为),否则为false(即,应该发生默认行为)。
答案 1 :(得分:2)
感谢stkent和ztan带领我回答。我最初的问题是如何调用工具栏来手动启动,但它实际上是需要覆盖相机的默认行为动画以使标记在地图上居中。您仍然可以触发工具栏显示并将相机保持在当前位置,如下所示:
mMap.setOnMarkerClickListener(new GoogleMap.OnMarkerClickListener() {
@Override
public boolean onMarkerClick(Marker marker) {
mRootView.post(new Runnable() {
@Override
public void run() {
mMap.animateCamera(CameraUpdateFactory.newLatLng(
mMap.getCameraPosition().target));
}
});
return false;
}
});
基本上,相机将从系统进行更新,但在下一帧中,由于我们发布了它,它将获得我们的相机更新,我们的相机更新将覆盖系统一,因此相机将不会移动所有。希望这可以帮助其他有同样问题的人。如果你想通过放置
覆盖显示其信息的标记,你可能会做同样的技巧 marker.hideInfoWindow()
在runnable中也是,因此您将覆盖其他两个操作而不覆盖工具栏的显示。