我使用的是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
}
1条答案
按热度按时间xytpbqjk1#
com.arcgismaps.mapping.view.MapView安装了一个默认的触摸侦听器,该侦听器公开SharedFlows以响应单次点击等手势,并提供
ScreenCoordinate
(表示屏幕上的点击点)和Point
(表示Map上正确空间参考中的点)。无需重新设置onTouchListener,只需在MapView.onSingleTapConfirmed SharedFlow上收集即可。