diff --git a/base-map/src/main/java/ru/touchin/basemap/MapExtension.kt b/base-map/src/main/java/ru/touchin/basemap/MapExtension.kt index a78589d..0bde807 100644 --- a/base-map/src/main/java/ru/touchin/basemap/MapExtension.kt +++ b/base-map/src/main/java/ru/touchin/basemap/MapExtension.kt @@ -2,34 +2,12 @@ package ru.touchin.basemap import android.util.SparseArray -inline fun MutableMap.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 MutableMap.getOrPutIfNotNull(key: K, defaultValue: () -> V?): V? = + get(key) ?: defaultValue()?.also { value -> + put(key, value) } - } else { - value - } -} -inline fun SparseArray.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 SparseArray.getOrPutIfNotNull(key: Int, defaultValue: () -> V?): V? = + get(key) ?: defaultValue()?.also { value -> + put(key, value) } - } else { - value - } -} diff --git a/google-map/src/main/java/ru/touchin/googlemap/GoogleIconGenerator.kt b/google-map/src/main/java/ru/touchin/googlemap/GoogleIconGenerator.kt index 69f9917..d29c67c 100644 --- a/google-map/src/main/java/ru/touchin/googlemap/GoogleIconGenerator.kt +++ b/google-map/src/main/java/ru/touchin/googlemap/GoogleIconGenerator.kt @@ -40,11 +40,9 @@ open class GoogleIconGenerator( 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) = clusterIconsCache.getOrPutIfNotNull(cluster.size) { - getClusterIcon(cluster) - } + override fun getClusterView(cluster: Cluster): BitmapDescriptor? = + clusterIconsCache.getOrPutIfNotNull(cluster.size) { getClusterIcon(cluster) } } diff --git a/google-map/src/main/java/ru/touchin/googlemap/GooglePlacemarkManager.kt b/google-map/src/main/java/ru/touchin/googlemap/GooglePlacemarkManager.kt index 61d01d6..14b3518 100644 --- a/google-map/src/main/java/ru/touchin/googlemap/GooglePlacemarkManager.kt +++ b/google-map/src/main/java/ru/touchin/googlemap/GooglePlacemarkManager.kt @@ -158,7 +158,7 @@ class GooglePlacemarkManager( onCameraIdleListener = listener } - companion object { + private companion object { const val CAMERA_DEBOUNCE_MILLI = 50L const val CLUSTERING_START_DEBOUNCE_MILLI = 50L diff --git a/yandex-map/src/main/java/ru/touchin/yandexmap/YandexIconGenerator.kt b/yandex-map/src/main/java/ru/touchin/yandexmap/YandexIconGenerator.kt index 827961d..13c2b41 100644 --- a/yandex-map/src/main/java/ru/touchin/yandexmap/YandexIconGenerator.kt +++ b/yandex-map/src/main/java/ru/touchin/yandexmap/YandexIconGenerator.kt @@ -10,13 +10,11 @@ abstract class YandexIconGenerator private val placemarksCache = mutableMapOf() private val clustersCache = mutableMapOf, 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) = clustersCache.getOrPutIfNotNull(cluster) { - getClusterIcon(cluster) - } + override fun getClusterView(cluster: List): ViewProvider? = + clustersCache.getOrPutIfNotNull(cluster) { getClusterIcon(cluster) } abstract override fun getClusterIcon(cluster: List): ViewProvider? diff --git a/yandex-map/src/main/java/ru/touchin/yandexmap/YandexPlacemarkManager.kt b/yandex-map/src/main/java/ru/touchin/yandexmap/YandexPlacemarkManager.kt index c5f0f73..ad62bd4 100644 --- a/yandex-map/src/main/java/ru/touchin/yandexmap/YandexPlacemarkManager.kt +++ b/yandex-map/src/main/java/ru/touchin/yandexmap/YandexPlacemarkManager.kt @@ -28,6 +28,8 @@ class YandexPlacemarkManager( clusterRadius: Double = 42.0, minZoom: Int = 35 ) { + removeMarkers() + val clusterizedCollection = mapView.map.mapObjects.addClusterizedPlacemarkCollection(this) val addedPlacemarks = clusterizedCollection.addEmptyPlacemarks(markers.map { it.point })