繁体   English   中英

android-maps-utils 中的 DefaultClusterRenderer 在 v1.2.1 中是否损坏?

[英]Is DefaultClusterRenderer in android-maps-utils broken in v1.2.1?

当试图覆盖 DefaultClusterRenderer 中的任何函数时,它不会在 v1.2.1 中编译。 v1.1.0 中一切正常

在这里,我想将 colors 设置为 clustericons,并覆盖DefaultClusterRenderer onBeforeClusterItemRendered以根据值设置 colors。

以下代码在 v1.2.1 中失败,在 v1.1.0 中完全没问题

package no.rogo.emptyfuel.utilities.cluster

import android.content.Context
import android.graphics.Color
import android.util.Log
import com.bumptech.glide.load.resource.bitmap.BitmapDrawableEncoder
import com.google.android.gms.maps.GoogleMap
import com.google.android.gms.maps.model.BitmapDescriptorFactory
import com.google.android.gms.maps.model.Marker
import com.google.android.gms.maps.model.MarkerOptions
import com.google.maps.android.clustering.Cluster
import com.google.maps.android.clustering.ClusterManager
import com.google.maps.android.clustering.view.DefaultClusterRenderer

import com.google.maps.android.ui.IconGenerator
import no.rogo.emptyfuel.R
import no.rogo.emptyfuel.utilities.StatusLevel

/**
 * Created by Roar on 05.04.2020.
 * Copyright RoGo Software / Gronmo IT
 */
class CustomClusterRenderer(
    context: Context,
    map: GoogleMap,
    clusterManager: ClusterManager<ClusterStation?>?
) : DefaultClusterRenderer<ClusterStation?>(context,map,clusterManager)
{
    private val TAG by lazy { this::class.java.simpleName }

    private val clusterIconGenerator = IconGenerator(context.applicationContext)

    override fun onBeforeClusterItemRendered(
        item: ClusterStation?,
        markerOptions: MarkerOptions?
    ) {

        var markerHue = when(item?.statusLevel)
        {
            StatusLevel.SINCE_NEW -> BitmapDescriptorFactory.HUE_GREEN
            StatusLevel.SINCE_FAIR -> BitmapDescriptorFactory.HUE_YELLOW
            StatusLevel.SINCE_OLD -> BitmapDescriptorFactory.HUE_RED
            StatusLevel.SINCE_OLDER -> BitmapDescriptorFactory.HUE_BLUE
            StatusLevel.NOT_SET -> BitmapDescriptorFactory.HUE_CYAN
            StatusLevel.NOT_AVAILABLE -> BitmapDescriptorFactory.HUE_AZURE
            StatusLevel.HIDDEN -> BitmapDescriptorFactory.HUE_ROSE
            StatusLevel.UNCERTAIN -> BitmapDescriptorFactory.HUE_ORANGE
            StatusLevel.UNKNOWN -> BitmapDescriptorFactory.HUE_MAGENTA
            else -> BitmapDescriptorFactory.HUE_VIOLET
        }



        //Color.colorToHSV(markerColor,markerHue)

        //Log.i(TAG,"map3: markerHue = ${markerHue[0]}")

        val markerDescriptor = BitmapDescriptorFactory.defaultMarker(markerHue)
        markerOptions?.icon(markerDescriptor)

        super.onBeforeClusterItemRendered(item, markerOptions)
    }

    override fun onClusterItemRendered(clusterItem: ClusterStation?, marker: Marker?) {
        super.onClusterItemRendered(clusterItem, marker)
    }

    override fun onBeforeClusterRendered(
        cluster: Cluster<ClusterStation?>?,
        markerOptions: MarkerOptions?
    ) {
        super.onBeforeClusterRendered(cluster, markerOptions)
    }


}

有谁知道发生了什么变化,以及如何解决?

RG

我找到了问题的解决方案,在这个拉( https://github.com/googlemaps/android-maps-utils/pull/687 )中,他们将参数更改为 nullsafe,所以在更改时:

override fun onBeforeClusterItemRendered(
    item: ClusterStation?,
    markerOptions: MarkerOptions?
)

override fun onBeforeClusterItemRendered(
    item: ClusterStation, 
    markerOptions: MarkerOptions
)

解决它。 它实际上是一个 kotlin 问题......

RG

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM