我有一个完全正常工作的GoogleMap,我可以通过调用显示我的用户位置 mMap.setMyLocationEnabled(true); 我想要实现的是实际点击按钮的功能,该按钮现在出现在GoogleMap上(即,使用正确的缩放等将地
mMap.setMyLocationEnabled(true);
我想要实现的是实际点击按钮的功能,该按钮现在出现在GoogleMap上(即,使用正确的缩放等将地图设置为用户位置的动画).
功能已经在GoogleMap对象中,我该如何使用它?
我不想使用LocationListener等来实现这一点,我只想“调用相同的代码”,当我点击地图上的按钮时,它会被调用.可以这么简单吗?
提前致谢.
编辑:
我基本上想要做的是将地图置于用户位置,这与我单击按钮时GoogleMap在用户位置中心的方式完全相同.像这样:
GoogleMap mMap = this.getMap(); if(mMap != null) { mMap.setMyLocationEnabled(true); //TODO center the map on mylocation }
编辑:
显然谷歌正在努力解决这个问题. http://code.google.com/p/gmaps-api-issues/issues/detail?id=4644
不确定为什么其他答案正在谈论OnMyLocationChangeListeners.这不是OP中提出的问题.问的是如何复制点击MyLocationButton的确切行为,这实际上比仅仅将相机设置为用户位置更复杂.该按钮根据您当前所处的缩放级别执行不同的操作.例如,当您缩小显示时,单击该按钮会在放大时将您设置为您的位置动画,而如果您已经处于某些缩放级别,则单击该按钮只会在保持当前状态的同时将您设置为您的位置.缩放级别.
如果我们只是简单地获得对MyLocationButton的引用并且只是,你知道,点击它就不是那么费力地试图复制这种行为,而不是很难.嗯,这是我发现当前最好的方法:
@OnClick(R.id.fabMyLocation) public void onMyLocationClick(FloatingActionButton fabMyLocation) { View myLocationButton = ((View) mapFragment.getView().findViewById(Integer.parseInt("1")).getParent()) .findViewById(Integer.parseInt("2")); myLocationButton.performClick(); }
是的,它并不漂亮,并且依赖于可能在未来版本的Google Maps API中更改的硬编码ID.但是这种检索按钮的方法基于this highly rated answer from 2013,到目前为止,从Google Play Services 8.4.0开始,仍然可以正常运行.