【问题标题】:Is DefaultClusterRenderer in android-maps-utils broken in v1.2.1?android-maps-utils 中的 DefaultClusterRenderer 在 v1.2.1 中是否损坏?
【发布时间】:2020-05-09 12:55:34
【问题描述】:

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

在这里,我想为 clustericons 设置颜色,并覆盖 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)
    }


}

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

RG

【问题讨论】:

    标签: google-maps kotlin android-maps-utils cluster-manager


    【解决方案1】:

    我找到了问题的解决方案,在这个 pull (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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-08-21
      • 2018-07-30
      • 2011-11-04
      • 1970-01-01
      相关资源
      最近更新 更多