Mat*_*teu 5 android google-maps
我有一个显示地图的Android应用程序.默认情况下,地图以其移动后的用户位置为中心(中心根据位置更新进行更新).
但是我希望用户能够使用手势来导航地图.当用户开始导航时,我希望"跟随"停止,并显示一个按钮,以便它可以重新开始.
如何知道用户何时移动地图中心?在GoogleMap.OnCameraChangeListener上,我不知道更改是由于位置更改还是用户交互.我有一个使用OnCameraChangeListener的工作解决方案,但它有点"脏",我觉得它不是很好:
map.setOnCameraChangeListener(new GoogleMap.OnCameraChangeListener() {
@Override
public void onCameraChange(CameraPosition position) {
// gpsPosition contains the last position obtained
if(isFollowing && gpsPosition!=null && (Math.abs(position.target.latitude - gpsPosition.latitude)>0.000001 || Math.abs(position.target.longitude - gpsPosition.longitude)>0.000001) ){
isFollowing = false;
map.getUiSettings().setMyLocationButtonEnabled(true);
}
}
});
Run Code Online (Sandbox Code Playgroud)
这个问题有一个很好的解决方案吗?
如果您想检测用户与地图的交互,那么OnCameraChangeListener这样做肯定为时已晚。它可能会在用户开始与地图交互后几秒钟被调用。
您需要做的是添加另外 2 个侦听器:
OnMyLocationButtonClickListener- 了解何时开始跟踪(设置isFollowing为true)OnMyLocationChangeListener- 当你isFollowing在的时候true,打电话GoogleMap.animateCamera到新的职位所以剩下的唯一的事情就是当你设置isFollowing为false:
在您的布局中创建一个不可见的覆盖层(就像这里一样,但使用正常View而不是自定义)并分配此覆盖层()View(OnTouchListener好吧,这是第三个,我撒谎说您只需要2个)。
在这个监听器总是返回false,但也设置isFollowing为false。当用户开始与地图交互时,您应该停止自动相机移动。
我还看到您正在显示和隐藏我的位置按钮,因此请在更改 的值时执行此操作isFollowing。顺便说一句:这样做是个好主意。我也来试试。
| 归档时间: |
|
| 查看次数: |
2293 次 |
| 最近记录: |