kotlin 如何处理Arc Gis android上的标记点击?

0vvn1miw  于 2023-02-24  发布在  Kotlin
关注(0)|答案(1)|浏览(200)

我使用的是ArcGis测试版ArcGis,以下是ArcGis测试版implementation "com.esri:arcgis-maps-kotlin:200.0.0-beta01"的依赖关系
我有这个代码来显示标记与可绘制的图标

val graphicsOverlay = GraphicsOverlay()
    mapView.graphicsOverlays.add(graphicsOverlay)
    val point = Point(
        -110.80518769034454,
        39.01637367273824, SpatialReference.wgs84()
    )

    val bitmapDrawable: BitmapDrawable =
        ContextCompat.getDrawable(mContext, R.drawable.ic_bridge_red) as BitmapDrawable

    val symbol: PictureMarkerSymbol = PictureMarkerSymbol(bitmapDrawable)
    symbol.height = 30f
    symbol.width = 30f
        val markerGraphic = Graphic(point, symbol)
    graphicsOverlay.graphics.add(markerGraphic)`

我有一堆这样的标记,我想显示一些视图时,用户点击这些标记如何处理这个标记上的点击侦听器?
我试过这个代码,但它不成功。

mapView.setOnTouchListener { v, event ->
        val screenCoordinate = ScreenCoordinate(event.x.toDouble(), event.y.toDouble())
        val mapPoint = mapView.screenToLocation(screenCoordinate)?.let {
            if (it.spatialReference != mapView.map?.spatialReference) {
                mapView.map?.spatialReference?.let { it1 -> GeometryEngine.project(it, it1) }
            } else {
                it
            }
        }

        GlobalScope.launch {
         val result=   mapView.identifyGraphicsOverlay(graphicsOverlay,screenCoordinate, 30.0,true)
            loggerE("result:${result.isSuccess}")
        }
        true
    }
xytpbqjk

xytpbqjk1#

com.arcgismaps.mapping.view.MapView安装了一个默认的触摸侦听器,该侦听器公开SharedFlows以响应单次点击等手势,并提供ScreenCoordinate(表示屏幕上的点击点)和Point(表示Map上正确空间参考中的点)。
无需重新设置onTouchListener,只需在MapView.onSingleTapConfirmed SharedFlow上收集即可。

mapView.onSingleTapConfirmed.collect { screenCoordinate, mapPoint ->
    val result: Result<IdenitfyGraphicsOverlayResult>
        = mapView.identifyGraphicsOverlay(
              graphicsOverlay, 
              screenCoordinate, 
              30.0 ,
              true
          )
}

相关问题