統一されたAPI
一度コードを書けば、地図プロバイダをいつでも切り替えられます。Google Maps から Mapbox などに乗り換えても、大量のコードを書き直す必要はありません。
統一されたAPI
一度コードを書けば、地図プロバイダをいつでも切り替えられます。Google Maps から Mapbox などに乗り換えても、大量のコードを書き直す必要はありません。
Jetpack Compose に最適化
最新のAndroid開発のために設計されており、Jetpack Compose を前提にしたAPIになっています。
複数プロバイダをサポート
Google Maps / Mapbox / HERE Maps / ArcGIS / MapLibre を、挙動を揃えた形でサポートしています。
オープンソース
Apache License 2.0 で公開されたオープンソースプロジェクトです。コミュニティ主導で開発が進んでいます。
MapConductorの使い方は簡単です。rememberXxxxViewStateとXxxxViewを組み合わせて使います。
Xxxxの部分がGoogleMapやMapboxなどに切り替わります。
Mapbox に切り替えたい場合は、rememberGoogleMapViewState() を rememberMapboxMapViewState() に、
GoogleMapView を MapboxMapView に変更するだけです。
それ以外のコードはそのままです。
| 地図SDK | mapViewState | mapView |
|---|---|---|
| GoogleMaps | rememberGoogleMapViewState | GoogleMapView |
| Mapbox | rememberMapboxViewState | MapboxMapView |
| MapLibre | rememberMapLibreViewState | MapLibreView |
| HERE | rememberHereMapViewState | HereMapView |
| ArcGIS | rememberArcGISMapViewState | ArcGISMapView |
@Composablefun MyMap() { // 地図の初期表示位置 val targetPosition = GeoPointImpl.fromLatLong(37.7749, -122.419) val initCamera = MapCameraPositionImpl( position = targetPosition, zoom = 12.0, ) // このmapViewStateを通じて、地図の表示状態を操作します val mapViewState = rememberGoogleMapViewState( cameraPosition = initCamera, )
GoogleMapView( state = mapViewState, onMapClick = { geoPoint -> println("Clicked: ${geoPoint.latitude}, ${geoPoint.longitude}") } ) { Marker( position = targetPosition, icon = DefaultIcon(label = "SF") ) }}
@Composablefun MyMap() { // 地図の初期表示位置 val targetPosition = GeoPointImpl.fromLatLong(38.911254, -77.033458) val initCamera = MapCameraPositionImpl( position = targetPosition, zoom = 12.0, ) // このmapViewStateを通じて、地図の表示状態を操作します val mapViewState = rememberMapboxMapViewState( cameraPosition = initCamera, )
MapboxMapView( state = mapViewState, onMapClick = { geoPoint -> println("Clicked: ${geoPoint.latitude}, ${geoPoint.longitude}") } ) { Marker( position = targetPosition, icon = DefaultIcon(label = "WA") ) }}
@Composablefun MyMap() { // 地図の初期表示位置 val targetPosition = GeoPointImpl.fromLatLong(51.43901, 5.47191) val initCamera = MapCameraPositionImpl( position = targetPosition, zoom = 12.0, ) // このmapViewStateを通じて、地図の表示状態を操作します val mapViewState = rememberHereMapViewState( cameraPosition = initCamera, )
HereMapView( state = mapViewState, onMapClick = { geoPoint -> println("Clicked: ${geoPoint.latitude}, ${geoPoint.longitude}") } ) { Marker( position = targetPosition, icon = DefaultIcon(label = "EIN") ) }}
| 機能 | Google Maps | Mapbox | HERE | ArcGIS | MapLibre |
|---|---|---|---|---|---|
| 地図 | ✓ | ✓ | ✓ | ✓ | ✓ |
| マーカー | ✓ | ✓ | ✓ | ✓ | ✓ |
| 円 | ✓ | ✓ | ✓ | ✓ | ✓ |
| ポリライン | ✓ | ✓ | ✓ | ✓ | ✓ |
| ポリゴン | ✓ | ✓ | ✓ | ✓ | ✓ |
| GroundImage | ✓ | N/A | N/A | N/A | N/A |
Android アプリに MapConductor を導入する準備ができたら、イントロダクション と チュートリアル を参照してください。