首页 > 解决方案 > 如何在 ESRI 地图中将不透明度设置为选定的图形

问题描述

在我的 android 应用程序中,我使用PictureMarkerSymbol类(使用 Kotlin)在ESRI 地图上添加图片标记符号,例如:

val markerSymbol = PictureMarkerSymbol.createAsync(ContextCompat.getDrawable(context!!, icon) as BitmapDrawable?).get()

这里通过设置符号的默认不透明度并将其添加到叠加层中,在地图上添加多个标记,例如:

        markerSymbol.opacity = 0.3f
        //add a new graphic as marker point
        val markerGraphicPoint = Point(activeCall.lang, activeCall.lat, spatialReference)
        val graphic = Graphic(markerGraphicPoint, markerSymbol)

        graphicsOverlay.graphics.add(graphic)

现在我想将不透明度设置为选定的图形(无论如何我都是从数组中获取选定的图形符号)。我可以从选定的图形中获取符号,例如:

selectedGraphic?.symbol

我想为选定的符号设置不透明度,例如:

selectedGraphic?.symbol = 1.0f // Need this one

但是怎么给它设置不透明度呢,这个符号类里没有setOpacity

或者如何从选定的图形中获取 PictureMarkerSymbol。?

我尝试将其转换为PictureMarkerSymbol这种方式:

selectedMarker?.symbol as PictureMarkerSymbol

但在这里我得到类转换异常

也试过:

val markerGraphicsOverlay = selectedMarker?.graphicsOverlay
markerGraphicsOverlay?.opacity = 0.1f

但同样的结果。

标签: esri-mapsarcgis-android-api

解决方案


将符号投射到PictureMarkerSymbol

if (selectedGraphic!= null && selectedGraphic?.symbol != null) {
    val pictureMarkerSymbol = selectedGraphic?.symbol as PictureMarkerSymbol
}

推荐阅读