Mutualizing some code

This commit is contained in:
Maxime NATUREL 2023-02-17 17:15:56 +01:00
parent df2c3e7c07
commit aa805dceca
1 changed files with 23 additions and 22 deletions

View File

@ -18,6 +18,7 @@ package im.vector.app.features.location
import android.content.Context
import android.content.res.TypedArray
import android.graphics.drawable.Drawable
import android.util.AttributeSet
import android.view.Gravity
import android.widget.ImageView
@ -170,12 +171,7 @@ class MapTilerMapView @JvmOverloads constructor(
}
val pinDrawable = state.pinDrawable ?: userLocationDrawable
pinDrawable?.let { drawable ->
if (!safeMapRefs.style.isFullyLoaded ||
safeMapRefs.style.getImage(state.pinId) == null) {
safeMapRefs.style.addImage(state.pinId, drawable.toBitmap())
}
}
addImageToMapStyle(pinDrawable, state.pinId, safeMapRefs)
safeMapRefs.symbolManager.deleteAll()
state.pinLocationData?.let { locationData ->
@ -185,29 +181,34 @@ class MapTilerMapView @JvmOverloads constructor(
}
if (pinDrawable != null && state.showPin) {
safeMapRefs.symbolManager.create(
SymbolOptions()
.withLatLng(LatLng(locationData.latitude, locationData.longitude))
.withIconImage(state.pinId)
.withIconAnchor(Property.ICON_ANCHOR_BOTTOM)
)
createSymbol(locationData, state.pinId, safeMapRefs)
}
}
state.userLocationData?.let { locationData ->
if (!safeMapRefs.style.isFullyLoaded || safeMapRefs.style.getImage(USER_PIN_ID) == null) {
userLocationDrawable?.let { drawable ->
safeMapRefs.style.addImage(USER_PIN_ID, drawable.toBitmap())
addImageToMapStyle(userLocationDrawable, USER_PIN_ID, safeMapRefs)
if (userLocationDrawable != null) {
createSymbol(locationData, USER_PIN_ID, safeMapRefs)
}
}
safeMapRefs.symbolManager.create(
}
private fun addImageToMapStyle(image: Drawable?, imageId: String, mapRefs: MapRefs) {
image?.let { drawable ->
if (!mapRefs.style.isFullyLoaded || mapRefs.style.getImage(imageId) == null) {
mapRefs.style.addImage(imageId, drawable.toBitmap())
}
}
}
private fun createSymbol(locationData: LocationData, imageId: String, mapRefs: MapRefs) {
mapRefs.symbolManager.create(
SymbolOptions()
.withLatLng(LatLng(locationData.latitude, locationData.longitude))
.withIconImage(USER_PIN_ID)
.withIconImage(imageId)
.withIconAnchor(Property.ICON_ANCHOR_BOTTOM)
)
}
}
fun zoomToLocation(locationData: LocationData) {
Timber.d("## Location: zoomToLocation")