マップ/シーン ビュー (Map/Scene View)
出典:ArcGIS Experience Builder - Guide - Map/Scene View
マップ ビューとシーン ビューとは何か
ArcGIS Experience Builder は、ArcGIS Maps SDK for JavaScript と同じマップおよびシーン ビューの概念を使用しています。Experience Builder では、実行時のビューが JimuMapView によってラップされているため、ウィジェットはマップ操作、メッセージ、アクションに関して一貫した拡張モデルを使用できます。
インターフェイスとライフサイクル
JimuMapView のインスタンスは、マップ ウィジェットによって作成および管理されます。
- Map ウィジェットは、設定された Web マップまたは Web シーンに対して
JimuMapViewオブジェクトを作成します。 - 他のウィジェットは、ほとんどのワークフローにおいて、MapView を直接作成することはありません。その代わりに、既存の
JimuMapViewインスタンスをサブスクライブして利用します。 - 実行時には、ウィジェットはアクティブな
JimuMapViewを受け取り、基盤となる ArcGIS Maps SDK ビューを操作できます。
プロパティ
JimuMapView には、いくつかの重要なプロパティが用意されています。
view: ArcGIS Maps SDK の MapView または ScenView オブジェクト。dataSourceId: そのビューを作成した Web マップまたは Web シーンのデータ ソース ID。mapWidgetId: そのビューを所有するマップ ウィジェットの ID。jimuLayerViews: そのビューに関連付けられたレイヤー ビューのラッパーの集合。
ウィジェットで JimuMapView を使用する方法
ウィジェットでマップやシーン ビューが必要な場合、一般的なワークフローは次のとおりです。
- ウィジェットの設定ページで、
MapWidgetSelectorを使用して、作成者がマップ ウィジェットを選択できるようにします。 - 選択されたマップ ウィジェットの ID をウィジェットの設定に保存します。
- 実行時に、
JimuMapViewComponentをレンダリングし、選択されたマップ ウィジェットの ID を渡します。 onActiveViewChangeコールバックを使用して、現在のJimuMapViewを取得します。
ユーザーに特定のビューを直接選択してもらう必要がある場合は、設定で JimuMapViewSelector を使用することもできます。
コード例
次に、アクティブな JimuMapView を取得し、その基盤となる ArcGIS Maps SDK ビューにアクセスする、最小構成のランタイム ウィジェットの例を示します。
import { React, type AllWidgetProps } from 'jimu-core'
import { JimuMapViewComponent, type JimuMapView } from 'jimu-arcgis'
export default function Widget (props: AllWidgetProps<any>) {
const [jimuMapView, setJimuMapView] = React.useState<JimuMapView>(null)
const onActiveViewChange = (activeView: JimuMapView) => {
setJimuMapView(activeView)
}
return (
<div className='widget-map-scene-view'>
<JimuMapViewComponent
useMapWidgetId={props.useMapWidgetIds?.[0]}
onActiveViewChange={onActiveViewChange}
/>
{jimuMapView?.view && (
<div>
Active view type: {jimuMapView.view.type}
</div>
)}
</div>
)
}