small fixes
This commit is contained in:
parent
5981c8f898
commit
26755f0730
|
|
@ -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
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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) }
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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?
|
||||
|
||||
|
|
|
|||
|
|
@ -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 })
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue