ArcGISMapViewHolder
ArcGIS SDK固有の機能にアクセスするためには、ArcGISMapViewHolderを使います。
ArcGISMapViewHolderの定義は次のとおりです。
typealias ArcGISMapViewHolder = MapViewHolderInterface<WrapSceneView, SceneView>
class ArcGISMapViewHolder( override val mapView: WrapSceneView, override val map: SceneView,) : MapViewHolderInterface<WrapSceneView, SceneView> { fun toScreenOffset(position: GeoPointInterface): Offset? suspend fun fromScreenOffset(offset: Offset): GeoPoint?}mapView: WrapSceneView: SceneViewを囲うためのWrapSceneViewmap: SceneView: MapViewを操作するためのArcGISSceneクラス
toScreenOffset(position: GeoPointInterface): Offset?: GeoPointで示す地図上の位置を、MapView左上を(0,0)としたDp値で返しますfromScreenOffsetSync(offset: Offset): GeoPoint?: MapView左上を(0,0)としたDp値で指定した位置の、地図上でのGeoPoint位置を返しますfromScreenOffset(offset: Offset): GeoPoint?: MapView左上を(0,0)としたDp値で指定した位置の、地図上でのGeoPoint位置を返します
ArcGISMapViewHolderの取得
Section titled “ArcGISMapViewHolderの取得”ArcGISMapViewHolderは、地図の初期化後に getMapViewHolder()を通じて取得できます。
// ArcGISval arcgisState = rememberArcGISMapViewState()val arcgisHolder: ArcGISMapViewHolder? = arcgisState.getMapViewHolder();@Composablefun BasicMapExample( modifier: Modifier = Modifier) { // 地図のカメラ位置 val mapViewState = rememberArcGISMapViewState( cameraPosition = MapCameraPosition( position = GeoPoint.fromLatLong(40.40195, -3.68698), zoom = 8.0 ), )
// AuthenticatorStateを設定 val authenticatorState = remember { AuthenticatorState() }
// ViewHolderの保持 var arcGisMapViewHolder by remember { mutableStateOf<ArcGISMapViewHolder?>(null) }
LaunchedEffect(arcGisMapViewHolder) { // 交通情報のレイヤーを表示 arcGisMapViewHolder?.let { holder -> val trafficLayer = ArcGISMapImageLayer("https://traffic.arcgis.com/arcgis/rest/services/World/Traffic/MapServer") holder.map.scene!!.operationalLayers.add(trafficLayer) } }
ArcGISMapView( state = mapViewState, modifier = modifier.fillMaxSize(), sdkInitialize = { context -> ArcGISOAuthHybridInitialize( // ログインダイアログを表示する AuthenticatorState authenticatorState = authenticatorState
// ArcGISポータルのURL portalUrl = "https://(your).maps.arcgis.com/",
// OAuth2アプリケーションのリダイレクトURL redirectUrl = "(application redirectUrl)",
// OAuth2アプリケーションのクライアントID clientId = "(application clientId)",
// (オプション) // OAuth2アプリケーションのクライアントシークレット // 省略した場合はログインダイアログが表示されます clientSecret = "(application client secret)", ) }, onMapLoaded = { // ViewHolderの取得 arcGisMapViewHolder = mapViewState.getMapViewHolder() } ) {}
// 認証UI(ユーザーログイン用)。ハイブリッド認証のフォールバックで使用されます。 Authenticator(authenticatorState = authenticatorState)}