イントロダクション
MapConductor は、複数のマッププロバイダー向けに SwiftUI 指向のオーバーレイ API を提供します。ネイティブマップ SDK を通じてレンダリングしながら、カメラ・ジオメトリ・イベント・オーバーレイに関する共通の API セットをアプリに提供します。
この SDK はプロバイダーのセットアップを置き換えるものではありません。Google Maps、Mapbox、MapKit、MapLibre、ArcGIS の設定は、各プロバイダーの要件に従って引き続き行う必要があります。MapConductor はそれらの SDK の上位に位置し、マーカー、シェイプ、カメラ状態、マップイベントなど、よく書かれるマップビューのコンテンツに対して一貫したレイヤーを提供します。
コアコンセプト
Section titled “コアコンセプト”GeoPointは緯度、経度、およびオプションの高度を格納します。GeoRectBoundsは南西・北東の地理的矩形を格納し、ポイントで拡張できます。MapCameraPositionはposition、zoom、bearing、tilt、オプションのパディング、オプションの表示領域を格納します。GoogleMapViewStateなどのプロバイダー状態クラスは、現在のカメラとマップデザインを管理します。GoogleMapViewなどのプロバイダーマップビューは、@MapViewContentBuilderからマップコンテンツをレンダリングします。- オーバーレイアイテムには
Marker、InfoBubble、Polyline、Polygon、Circle、GroundImage、RasterLayerが含まれます。 - オプションモジュールにより
HeatmapOverlayやMarkerClusterGroupなどのオーバーレイが追加されます。
典型的なワークフロー
Section titled “典型的なワークフロー”MapConductorCoreと 1 つのプロバイダーパッケージを Swift Package ターゲットに追加します。- ネイティブプロバイダー SDK(API キーやアクセストークンなど)を設定します。
- プロバイダーの
MapViewStateを SwiftUI の状態オブジェクトとして作成します。 - 対応するプロバイダーのマップビューをレンダリングします。
- マップビューのコンテンツクロージャにオーバーレイを追加します。
- カメラの変更には
moveCameraTo(cameraPosition:durationMillis:)またはmoveCameraTo(position:durationMillis:)を使用します。
最小サンプル
Section titled “最小サンプル”import SwiftUIimport MapConductorCoreimport MapConductorForGoogleMaps
struct ContentView: View { @StateObject private var mapViewState = GoogleMapViewState( cameraPosition: MapCameraPosition( position: GeoPoint(latitude: 35.6812, longitude: 139.7671), zoom: 13 ) )
var body: some View { GoogleMapView(state: mapViewState) { Marker( position: GeoPoint(latitude: 35.6812, longitude: 139.7671), icon: DefaultMarkerIcon(label: "T") )
Circle( center: GeoPoint(latitude: 35.6812, longitude: 139.7671), radiusMeters: 500, fillColor: UIColor.red.withAlphaComponent(0.2) ) } }}プロバイダーパッケージ
Section titled “プロバイダーパッケージ”MapConductorForGoogleMaps:GoogleMapViewState/GoogleMapViewMapConductorForMapbox:MapboxViewState/MapboxMapViewMapConductorForMapKit:MapKitViewState/MapKitMapViewMapConductorForMapLibre:MapLibreViewState/MapLibreMapViewMapConductorForArcGIS:ArcGISMapViewState/ArcGISMapView
プロバイダー SDK は引き続き API キーやアクセストークンなどの独自のセットアップが必要です。
プロバイダーを切り替える場合は、状態の型、ビューの型、およびプロバイダー固有のセットアップを変更します。マップコンテンツクロージャ内のオーバーレイ宣言は、通常そのまま再利用できます。
プロバイダーエスケープハッチ
Section titled “プロバイダーエスケープハッチ”共通 API はポータブルなマップ動作を目的としています。プロバイダー固有の動作にネイティブ SDK へのアクセスが必要な場合は、プロバイダー状態の getMapViewHolder() を呼び出してください。これは AnyMapViewHolder? を返し、その mapView および map プロパティをプロバイダーのネイティブ型にキャストできます。
このエスケープハッチはプロバイダー固有の動作にのみ使用してください。カメラの移動、マーカータップ、シェイプのレンダリングなどの共通機能には、コードの移植性を保つために MapConductor API を優先して使用してください。