Сбой MapView после первой загрузки с помощью onBackPressed(), NavigationUp()
я пытаюсь работать с MapView,
У меня почти автоматическая навигация с помощью NavController , но когда я возвращаюсь назад (navigUp()) и мне нужно загрузить карту, я получаю эту ошибку.
com.google.maps.api.android.lib6.common.apiexception.c: Error using newLatLngBounds(LatLngBounds, int): Map size can't be 0. Most likely, layout has not yet occurred for the map view. Either wait until layout has occurred or use newLatLngBounds(LatLngBounds, int, int, int) which allows you to specify the map's dimensions.
at com.google.maps.api.android.lib6.common.m.h(:com.google.android.gms.dynamite_mapsdynamite@233918037@23.39.18 (150400-0):8)
at com.google.maps.api.android.lib6.gmm6.api.c.l(:com.google.android.gms.dynamite_mapsdynamite@233918037@23.39.18 (150400-0):28)
at com.google.maps.api.android.lib6.impl.ae.a(:com.google.android.gms.dynamite_mapsdynamite@233918037@23.39.18 (150400-0):10)
at com.google.maps.api.android.lib6.gmm6.api.c.z(:com.google.android.gms.dynamite_mapsdynamite@233918037@23.39.18 (150400-0):31)
at com.google.maps.api.android.lib6.impl.bk.q(:com.google.android.gms.dynamite_mapsdynamite@233918037@23.39.18 (150400-0):25)
at com.google.android.gms.maps.internal.i.bb(:com.google.android.gms.dynamite_mapsdynamite@233918037@23.39.18 (150400-0):1959)
at m.fi.onTransact(:com.google.android.gms.dynamite_mapsdynamite@233918037@23.39.18 (150400-0):21)
Я знаю, что проще использовать SupportMapFragment , поскольку все автоматизировано, но мне хотелось бы знать, почему у меня возникает эта ошибка.
У меня реализованы следующие методы:
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
mapView = binding.root.findViewById(R.id.gm_resource)
mapView.onCreate(savedInstanceState)
mapView.getMapAsync(this)
}
override fun onMapReady(p0: GoogleMap) {
map = p0
map.uiSettings.isMyLocationButtonEnabled = false
map.mapType = GoogleMap.MAP_TYPE_SATELLITE
map.setOnMapClickListener { requireContext().hideKeyboard(binding.root) }
createClusterManager(map)
loadResources()
mapFocus(false)
moveToolbar()
}
Я также пытаюсь контролировать жизнь MapView
override fun onResume() {
mapView.onResume()
super.onResume()
}
override fun onDestroy() {
mapView.onDestroy()
super.onDestroy()
}
override fun onLowMemory() {
mapView.onLowMemory()
super.onLowMemory()
}
Не знаю, правильный ли это путь, если кто-то знает, как заставить MapView работать корректно, контролируя его жизнь и нагрузки, буду бесконечно благодарен. Спасибо
1 ответ
Попробуйте разместить SupportMapFragment. Он более интуитивно понятен и с ним проще работать, поэтому у вас не возникнет подобных проблем.