在 Android / Google 地图中,位置更改会重置缩放和方位角,但可以使用 CameraPosition
和 CameraUpdate
来记录和恢复当前的缩放和方位角。
下面是一个示例代码,演示如何在位置更改后恢复缩放和方位角:
// 在 Activity 或 Fragment 中声明以下变量
private GoogleMap googleMap;
private CameraPosition cameraPosition;
// 在 onCreate 方法中获取地图对象,并设置监听事件
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager()
.findFragmentById(R.id.map);
mapFragment.getMapAsync(new OnMapReadyCallback() {
@Override
public void onMapReady(GoogleMap map) {
googleMap = map;
googleMap.setOnCameraIdleListener(new GoogleMap.OnCameraIdleListener() {
@Override
public void onCameraIdle() {
// 保存当前的 CameraPosition
cameraPosition = googleMap.getCameraPosition();
}
});
}
});
}
// 在 onResume 方法中恢复缩放和方位角
@Override
protected void onResume() {
super.onResume();
if (cameraPosition != null) {
googleMap.moveCamera(CameraUpdateFactory.newCameraPosition(cameraPosition));
}
}
在这个例子中,我们在 onCreate
方法中获取了地图对象,并设置了 OnCameraIdleListener
来监听相机的闲置事件。在闲置事件中,我们保存了当前的 CameraPosition
对象。
然后,在 onResume
方法中,我们检查 cameraPosition
是否为空,如果不为空,我们使用 moveCamera
方法来恢复之前保存的 CameraPosition
。这样,当位置更改后,缩放和方位角就会被恢复。
请注意,此代码示例假设您已经在布局文件中添加了一个名为 map
的 SupportMapFragment
。您需要相应地调整布局文件和代码,以适应您的实际情况。