diff --git a/play-services-maps-core-mapbox/src/main/kotlin/org/microg/gms/maps/mapbox/GoogleMap.kt b/play-services-maps-core-mapbox/src/main/kotlin/org/microg/gms/maps/mapbox/GoogleMap.kt index 662817b6111dc01abd665b2f6576a6501a01b0e0..38e3f1be7681045afd43421c4ba8d3e05bfa9f5b 100644 --- a/play-services-maps-core-mapbox/src/main/kotlin/org/microg/gms/maps/mapbox/GoogleMap.kt +++ b/play-services-maps-core-mapbox/src/main/kotlin/org/microg/gms/maps/mapbox/GoogleMap.kt @@ -456,10 +456,13 @@ class GoogleMapImpl(context: Context, var options: GoogleMapOptions) : AbstractG val map = map if (map == null) { // Snapshot cannot be taken + Log.e(TAG, "snapshot could not be taken because map is null") runOnMainLooper { callback.onBitmapWrappedReady(ObjectWrapper.wrap(null)) } } else { + Log.d(TAG, "taking snapshot") map.snapshot { runOnMainLooper { + Log.d(TAG, "snapshot ready, providing to application") callback.onBitmapWrappedReady(ObjectWrapper.wrap(it)) } } diff --git a/play-services-maps-core-mapbox/src/main/kotlin/org/microg/gms/maps/mapbox/Pattern.kt b/play-services-maps-core-mapbox/src/main/kotlin/org/microg/gms/maps/mapbox/Pattern.kt index 0214f9ca5d935f1b84a78e0e63e817bf0244ac07..5324b55c300ba7bba0335268f49058aa2192f5e1 100644 --- a/play-services-maps-core-mapbox/src/main/kotlin/org/microg/gms/maps/mapbox/Pattern.kt +++ b/play-services-maps-core-mapbox/src/main/kotlin/org/microg/gms/maps/mapbox/Pattern.kt @@ -7,6 +7,7 @@ import com.google.android.gms.maps.model.Dash import com.google.android.gms.maps.model.Dot import com.google.android.gms.maps.model.Gap import com.google.android.gms.maps.model.PatternItem +import kotlin.math.max fun PatternItem.getName(): String = when (this) { is Dash -> "dash${this.length}" @@ -18,9 +19,12 @@ fun PatternItem.getName(): String = when (this) { /** * Name of pattern, to identify it after it is added to map */ -fun List.getName(color: Int, strokeWidth: Float, skew: Float = 1f) = joinToString("-") { - it.getName() -} + "-${color}-width${strokeWidth}-skew${skew}" +fun List.getName(color: Int, strokeWidth: Float, skew: Float = 1f) = if (isEmpty()) { + "solid-${color}" +} else {joinToString("-") { + it.getName() + } + "-${color}-width${strokeWidth}-skew${skew}" +} /** * Gets width that a bitmap for this pattern item would have if the pattern's bitmap @@ -51,6 +55,14 @@ fun List.makeBitmap(paint: Paint, strokeWidth: Float, skew: Float): val width = getWidth(strokeWidth, skew).toInt() val height = (strokeWidth * skew).toInt() // avoids squished image bugs + // For empty list or nonsensical input (zero-width items) + if (width == 0 || height == 0) { + val nonZeroHeight = max(1f, strokeWidth) + return Bitmap.createBitmap(1, nonZeroHeight.toInt(), Bitmap.Config.ARGB_8888).also { + Canvas(it).drawRect(0f, 0f, nonZeroHeight, nonZeroHeight, paint) + } + } + val bitmap = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888) val canvas = Canvas(bitmap) diff --git a/play-services-maps-core-mapbox/src/main/kotlin/org/microg/gms/maps/mapbox/Styles.kt b/play-services-maps-core-mapbox/src/main/kotlin/org/microg/gms/maps/mapbox/Styles.kt index b1109160dfc3b566525d25f79d7957fe83ea7997..7a7f08b7e79104f9edc1e90b8d0c82c5b93eeea2 100644 --- a/play-services-maps-core-mapbox/src/main/kotlin/org/microg/gms/maps/mapbox/Styles.kt +++ b/play-services-maps-core-mapbox/src/main/kotlin/org/microg/gms/maps/mapbox/Styles.kt @@ -128,7 +128,7 @@ class Styler( @SerializedName("invert_lightness") val invertLightness: Boolean?, val visibility: String?, val color: String?, - val weight: Int? + //val weight: Int? ) /** diff --git a/play-services-maps-core-mapbox/src/main/kotlin/org/microg/gms/maps/mapbox/model/Circle.kt b/play-services-maps-core-mapbox/src/main/kotlin/org/microg/gms/maps/mapbox/model/Circle.kt index 93f3c1d32a8d62e257de8be1794066dc57a15e78..5cc551212d52ac5a1ed5eee49f53f018ee227375 100644 --- a/play-services-maps-core-mapbox/src/main/kotlin/org/microg/gms/maps/mapbox/model/Circle.kt +++ b/play-services-maps-core-mapbox/src/main/kotlin/org/microg/gms/maps/mapbox/model/Circle.kt @@ -285,7 +285,7 @@ class CircleImpl(private val map: GoogleMapImpl, private val id: String, options it.lineWidth = strokeWidth / map.dpiFactor - (strokePattern ?: listOf(Dash(1f))).let { pattern -> + (strokePattern ?: emptyList()).let { pattern -> val bitmapName = pattern.getName(strokeColor, strokeWidth) map.addBitmap(bitmapName, pattern.makeBitmap(strokeColor, strokeWidth)) line.annotation?.linePattern = bitmapName