如何解决RecyclerView 中的 MapView 在某些滚动位置显示错误的地图
我在我的 MapView
项目中使用 recyclerview
来显示有关该项目所在城市的信息,但我不知道如何解决绑定问题。
当前项位于视口顶部时,地图正确:
如您所见,地图显示的是萨尔茨堡而不是爱丁堡,因为萨尔茨堡位于 recyclerview
视口的顶部。
我的 ViewHolder
课:
inner class WeatherViewHolder(
private val binding: ItemWeatherBinding
) : RecyclerView.ViewHolder(
binding.root
),OnMapReadyCallback {
lateinit var gMap: GoogleMap
init {
binding.apply {
// Other binging here...
with(map) {
onCreate(null)
getMapAsync(this@WeatherViewHolder)
}
}
}
fun bind(weather: Weather) {
binding.apply {
//Other binding here...
setMapLocation()
}
}
override fun onMapReady(googleMap: GoogleMap) {
Log.v("Maps","OnReady")
MapsInitializer.initialize(superFragment.activity)
gMap = googleMap
with(gMap.uiSettings) {
isZoomControlsEnabled = false
isCompassEnabled = false
isMapToolbarEnabled = false
isMyLocationButtonEnabled = false
isRotateGesturesEnabled = false
isScrollGesturesEnabled = false
isTiltGesturesEnabled = false
isZoomGesturesEnabled = false
}
binding.map.onResume()
setMapLocation()
}
private fun setMapLocation() {
if (!::gMap.isInitialized) return
Log.v("Maps","setting location")
val weather = getItem(adapterPosition)
with(gMap) {
moveCamera(CameraUpdateFactory.newLatLngZoom(LatLng(weather.latitude,weather.longitude),10f))
mapType = GoogleMap.MAP_TYPE_NORMAL
}
superFragment.viewLifecycleOwner.lifecycleScope.launch {
repository.getInfo { response ->
gMap.addTileOverlay(/*setting my tiles here*/)
}
}
}
}
我尝试只对当前展开的项目调用 setMapLocation()
(因为我在这里使用了可展开的布局),但这只会导致更混乱的行为。
这里的问题是:无论 recyclerview
的滚动位置如何,我该如何修复此行为并显示正确的地图?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。