【发布时间】:2023-03-06 15:58:02
【问题描述】:
我有一个定位服务,它在后台运行并更新片段中用户的位置。
当关闭应用程序时,服务会以startForeground() 进入前台并显示正在进行的通知。
当我点击通知时,它会打开应用程序,但我要更改的是地图全部缩小了,我必须等待下一个位置更新才能放大地图。
我的Fragment 的onCreateView:
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View root = inflater.inflate(R.layout.fragment_home, container, false);
ButterKnife.bind(this, root);
mMapView.onCreate(savedInstanceState);
mMapView.onResume(); // needed to get the map to display immediately
try {
MapsInitializer.initialize(getActivity().getApplicationContext());
} catch (Exception e) {
e.printStackTrace();
}
mMapView.getMapAsync(new OnMapReadyCallback() {
@Override
public void onMapReady(GoogleMap mMap) {
googleMap = mMap;
if (ActivityCompat.checkSelfPermission(getActivity(), Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(getActivity(), Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
return;
}
googleMap.setMyLocationEnabled(true);
startLocationService();
}
});
return root;
}
所以每次创建fragment时都会调用这个方法——比如场景:
打开应用,调用onCreateView,定位服务启动,放大地图,关闭应用(服务仍在运行并显示通知),点击通知,然后再次调用onCreateView,地图首先缩小。
有没有一种好方法可以“保留”用户位置并防止地图进行整个缩小 -> 等待位置更新 -> 放大?
我希望当用户通过点击通知打开应用程序时,地图已经放大了他的位置。
【问题讨论】:
-
如何在 sharedprefence 和 onMapReady 中退出应用程序时存储用户位置并设置该位置并添加缩放级别而不为相机设置动画
-
嘿。通过动画你的意思是这个? CameraPosition cameraPosition = new CameraPosition.Builder().target(currentLatLng).zoom(15).build(); googleMap.animateCamera(CameraUpdateFactory.newCameraPosition(cameraPosition));如何在不为相机设置动画的情况下放大?
标签: android google-maps fragment google-maps-android-api-2 android-location