Google maps android maps utils中的DefaultClusterRenderer在v1.2.1中被破坏了吗?

Google maps android maps utils中的DefaultClusterRenderer在v1.2.1中被破坏了吗?,google-maps,kotlin,android-maps-utils,cluster-manager,Google Maps,Kotlin,Android Maps Utils,Cluster Manager,当尝试重写DefaultClusterRenderer中的任何函数时,它将不会在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.Bitmap

当尝试重写DefaultClusterRenderer中的任何函数时,它将不会在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)
    }


}
在这里,我想为ClusterIcon设置颜色,并覆盖
DefaultClusterRenderer
onBeforeClusterItemRendered
以根据值设置颜色

以下代码在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)
    }


}
package no.rogo.emptyfuel.utilities.cluster
导入android.content.Context
导入android.graphics.Color
导入android.util.Log
导入com.bumptech.glide.load.resource.bitmap.BitmapDrawableEncoder
导入com.google.android.gms.maps.GoogleMap
导入com.google.android.gms.maps.model.BitmapDescriptorFactory
导入com.google.android.gms.maps.model.Marker
导入com.google.android.gms.maps.model.MarkerOptions
导入com.google.maps.android.clustering.Cluster
导入com.google.maps.android.clustering.ClusterManager
导入com.google.maps.android.clustering.view.DefaultClusterRenderer
导入com.google.maps.android.ui.IconGenerator
进口编号:rogo.emptyfuel.R
导入编号:rogo.emptyfuel.utilities.StatusLevel
/**
*由Roar于2020年4月5日创建。
*版权所有RoGo软件/Gronmo IT
*/
类CustomClusterRenderer(
上下文:上下文,
地图:谷歌地图,
俱乐部经理:俱乐部经理?
):DefaultClusterRenderer(上下文、映射、clusterManager)
{
惰性{this::class.java.simpleName}的私有val标记
private val clusterIconGenerator=IconGenerator(context.applicationContext)
重写fun onBeforeClusterItemRendered(
项目:ClusterStation?,
标记选项:标记选项?
) {
var markerHue=何时(项目?.statusLevel)
{
StatusLevel.SINCE\u NEW->BitmapDescriptorFactory.HUE\u绿色
StatusLevel.SINCE\u FAIR->BitmapDescriptorFactory.HUE\u黄色
StatusLevel.SINCE\u OLD->BitmapDescriptorFactory.HUE\u RED
StatusLevel.SINCE\u OLDER->BitmapDescriptorFactory.HUE\u BLUE
StatusLevel.NOT_SET->BitmapDescriptorFactory.HUE_青色
StatusLevel.NOT_AVAILABLE->BitmapDescriptorFactory.HUE_AZURE
StatusLevel.HIDDEN->BitmapDescriptorFactory.HUE\u
StatusLevel.UNCERTAIN->BitmapDescriptorFactory.HUE\u橙色
StatusLevel.UNKNOWN->BitmapDescriptorFactory.HUE\u洋红
else->BitmapDescriptorFactory.HUE\u紫色
}
//颜色。颜色HSV(markerColor,markerHue)
//Log.i(标记“map3:markerHue=${markerHue[0]}”)
val markerDescriptor=BitmapDescriptorFactory.defaultMarker(markerHue)
markerOptions?图标(markerDescriptor)
super.onBeforeClusterItemRendered(项目、标记选项)
}
覆盖有趣的onClusterItemRendered(clusterItem:ClusterStation?,marker:marker?){
super.onClusterItemRendered(集群项目、标记)
}
在ClusterRendered之前覆盖乐趣(
集群:集群?,
标记选项:标记选项?
) {
super.onBeforeClusterRendered(群集、标记选项)
}
}
有人知道发生了什么变化,以及如何修复吗


RG

我找到了问题的解决方案,在这个pull()中,他们将参数更改为空安全,因此在更改时:

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

修好了。这实际上是一个科特林问题

RG