small fixes

This commit is contained in:
AnastasiyaK97 2022-09-14 17:32:45 +03:00 committed by Anastasiya97
parent 5981c8f898
commit 26755f0730
5 changed files with 17 additions and 41 deletions

View File

@ -2,34 +2,12 @@ package ru.touchin.basemap
import android.util.SparseArray
inline fun <K, V> MutableMap<K, V>.getOrPutIfNotNull(key: K, defaultValue: () -> V?): V? {
val value = get(key)
return if (value == null) {
val value = defaultValue()
when {
value != null -> {
put(key, value)
value
}
else -> null
inline fun <K, V> MutableMap<K, V>.getOrPutIfNotNull(key: K, defaultValue: () -> V?): V? =
get(key) ?: defaultValue()?.also { value ->
put(key, value)
}
} else {
value
}
}
inline fun <V> SparseArray<V>.getOrPutIfNotNull(key: Int, defaultValue: () -> V?): V? {
val value = get(key)
return if (value == null) {
val value = defaultValue()
when {
value != null -> {
put(key, value)
value
}
else -> null
inline fun <V> SparseArray<V>.getOrPutIfNotNull(key: Int, defaultValue: () -> V?): V? =
get(key) ?: defaultValue()?.also { value ->
put(key, value)
}
} else {
value
}
}

View File

@ -40,11 +40,9 @@ open class GoogleIconGenerator<T : ClusterItem>(
BitmapDescriptorFactory.fromBitmap(it.toBitmap())
}
override fun getClusterItemView(clusterItem: T) = clusterItemIconsCache.getOrPutIfNotNull(clusterItem) {
getClusterItemIcon(clusterItem)
}
override fun getClusterItemView(clusterItem: T): BitmapDescriptor? =
clusterItemIconsCache.getOrPutIfNotNull(clusterItem) { getClusterItemIcon(clusterItem) }
override fun getClusterView(cluster: Cluster<T>) = clusterIconsCache.getOrPutIfNotNull(cluster.size) {
getClusterIcon(cluster)
}
override fun getClusterView(cluster: Cluster<T>): BitmapDescriptor? =
clusterIconsCache.getOrPutIfNotNull(cluster.size) { getClusterIcon(cluster) }
}

View File

@ -158,7 +158,7 @@ class GooglePlacemarkManager<TClusterItem : ClusterItem>(
onCameraIdleListener = listener
}
companion object {
private companion object {
const val CAMERA_DEBOUNCE_MILLI = 50L
const val CLUSTERING_START_DEBOUNCE_MILLI = 50L

View File

@ -10,13 +10,11 @@ abstract class YandexIconGenerator<TPoint : PointModel>
private val placemarksCache = mutableMapOf<TPoint, ViewProvider>()
private val clustersCache = mutableMapOf<List<TPoint>, ViewProvider>()
override fun getClusterItemView(clusterItem: TPoint) = placemarksCache.getOrPutIfNotNull(clusterItem) {
getClusterItemIcon(clusterItem)
}
override fun getClusterItemView(clusterItem: TPoint): ViewProvider? =
placemarksCache.getOrPutIfNotNull(clusterItem) { getClusterItemIcon(clusterItem) }
override fun getClusterView(cluster: List<TPoint>) = clustersCache.getOrPutIfNotNull(cluster) {
getClusterIcon(cluster)
}
override fun getClusterView(cluster: List<TPoint>): ViewProvider? =
clustersCache.getOrPutIfNotNull(cluster) { getClusterIcon(cluster) }
abstract override fun getClusterIcon(cluster: List<TPoint>): ViewProvider?

View File

@ -28,6 +28,8 @@ class YandexPlacemarkManager<TPoint : PointModel>(
clusterRadius: Double = 42.0,
minZoom: Int = 35
) {
removeMarkers()
val clusterizedCollection = mapView.map.mapObjects.addClusterizedPlacemarkCollection(this)
val addedPlacemarks = clusterizedCollection.addEmptyPlacemarks(markers.map { it.point })