Dokumentation / Kartenansicht / Kartendesign

Kartendesign (Kacheln) wechseln

Das Aussehen der Karte wird allein durch mapDesignType bestimmt. Wählen Sie einen für den Anbieter vorbereiteten Preset oder geben Sie eine Style-JSON- und eine Tile-URL an, um ein eigenes Design zu definieren. Das Wechseln erfordert nur die Zuweisung an die Eigenschaft; die Karte muss nicht neu erstellt werden.

ANDROID
com.mapconductor:core
iOS
MapConductorCore
REACT
@mapconductor/js-sdk-core

01 · Design-Typ

Jedes Design eines Anbienders implementiert MapDesignTypeInterface (unter iOS MapDesignTypeProtocol). Wenn Sie nur die drei gemeinsamen Elemente beachten, ist die Handhabung gleich, auch wenn sich der Anbieter ändert.

id

Wert zur Identifizierung des Designs. Ein nativer Wert des Anbieters (wie die mapType-Konstante von Google) oder eine Zeichenfolge.

getValue()

Der tatsächliche Wert, der an die Karten-Engine des Anbieters übergeben wird. Enthält die URL des Styles-JSON oder Kacheldefinitionen.

attributionRules

Regeln zum Umschalten der Quellenangabe je nach Zoomstufe und Anzeigebereich. Erforderlich bei der Verwendung eigener Kacheln.

02 · Presets

In den Paketen der einzelnen Anbieter sind die für diesen Anbieter verfügbaren Standarddesigns als Konstanten enthalten. Die Beispiel-App verwendet diese Liste direkt als Auswahlmöglichkeiten.

Anbieter
Typ
Preset
Google Maps
GoogleMapDesign
Normal · Satellite · Hybrid · Terrain · None
MapLibre
MapLibreDesign
DemoTiles · OsmBright / En / Ja · MapTilerBasicEn / Ja · MapTilerTonerEn / Ja · OpenMapTiles(9)
MapKit
iOS · React
MapKitMapDesign
Standard · Satellite · Hybrid · SatelliteFlyover · HybridFlyover · MutedStandard
Mapbox
MapboxMapDesign
React: MapboxDesign
Standard · StandardSatellite · Streets · Outdoors · Light · Dark · Satellite · SatelliteStreets · NavigationDay / Night
Auf React: Streets · Outdoors · Light · Dark · SatelliteStreets, dazu Style-JSON aus der Familie OsmBright / MapTiler
MapTiler
MapTilerDesign
Streets · StreetsDark · StreetsLight · Basic · Bright · Satellite · Outdoor · Winter · Topo · Toner · Dataviz · Backdrop · Ocean · Landscape · Aquarelle · OpenStreetMap(16)
HERE
HereMapDesign
NormalDay / Night · Satellite · HybridDay / Night · LiteDay / Night · LiteHybridDay / Night · LogisticsDay / Night · LogisticsHybridDay · RoadNetworkDay / Night (14; unter iOS 15, mit LogisticsHybridNight)
ArcGIS
ArcGISDesign
iOS / React: ArcGISMapDesign
Streets · Imagery · Topographic · Navigation · Nova · Newspaper · HumanGeography… · OsmStandard …(61)
TomTom
TomTomMapDesign
React: TomTomDesign
Standard · Driving · Satellite
React hat zusätzlich StandardLight / Dark · DrivingLight / Dark · MonoLight / Dark
Longdo
LongdoDesign
Normal · Easy · Pastel · PastelGray · Hard · Gray · Light · Night · Dark · Political · Osm · Satellite · Hybrid(13)
Leaflet
React
LeafletDesign
OpenStreetMap · None + beliebige XYZ-Kacheln
OpenLayers
React
OpenLayersDesign
OpenStreetMap · None + beliebige XYZ-Kacheln
Azure Maps
React
AzureMapsDesign
Road · RoadShadedRelief · Blank · BlankAccessible · Satellite · SatelliteRoadLabels · GrayscaleDark / Light · Night · HighContrastDark / Light(12)
Cesium
React
CesiumDesign
Default · None

Es werden nur Unterschiede zwischen den Plattformen angemerkt. Zeilen ohne Anmerkung haben denselben Typnamen und denselben Konstantennamen für Presets auf allen drei Plattformen.

Plattform

03 · Wechseln

Weisen Sie mapDesignType des Zustandsobjekts der Kartenansicht einen Wert zu. Da der Zustand überwacht wird, ändert sich das Aussehen der Karte zum Zeitpunkt der Zuweisung.

MapDesignMapPage.kt · Jetpack Compose
// state ist MapViewStateInterface<*>; vor der Zuweisung auf den Anbietertyp einengen
when (state) {
    is GoogleMapViewStateInterface ->
        state.mapDesignType = GoogleMapDesign.Satellite
    is MapLibreViewStateInterface ->
        state.mapDesignType = MapLibreDesign.OsmBrightJa
    is MapTilerViewStateInterface ->
        state.mapDesignType = MapTilerDesign.Toner
}

04 · Ein benutzerdefiniertes Design definieren

Der Typ der Presets ist direkt als Konstruktor verfügbar. Wenn Sie eine ID und eine URL für die Style-JSON (Vektor) oder eine Tile-URL-Vorlage (Raster) übergeben, können Sie eigene Styles oder GSI-Tiles wie Presets verwenden.

CustomDesigns.kt · MapLibre / Mit Style-JSON definieren
// MapLibreDesign ist eine data class: Übergeben Sie eine Style-JSON-URL und Sie haben Ihr eigenes Design
val GsiPale =
    MapLibreDesign(
        id = "gsi-pale",
        styleJsonURL = "https://example.com/styles/gsi-pale/style.json",
        attributionRules =
            listOf(
                AttributionRule(attribution = "GSI-Kacheln"),
                AttributionRule(attribution = "GEBCO", minZoom = 5, maxZoom = 8),
            ),
    )
MapDesignPageViewModel.kt · In die Auswahlliste mischen
private val mapLibreDesigns =
    listOf(
        MapDesignOption(label = "OsmBright", design = MapLibreDesign.OsmBright),
        MapDesignOption(label = "GSI Pale", design = GsiPale),
    )
GoogleMapDesign.Custom · Native Werte umschließen
// Umhüllt die native mapType-Konstante unverändert und ergänzt nur die Quellenangabe
val NormalWithNotice =
    GoogleMapDesign.Custom(
        id = MAP_TYPE_NORMAL,
        attributionRules = listOf(AttributionRule(attribution = "Eigene Daten 2026")),
    )

Bei Anbietern, bei denen die Kartenart durch native Konstanten bestimmt wird (z. B. Google Maps), verwenden Sie GoogleMapDesign.Custom und übergeben eine Konstante an id, um nur die Quellenangabe auszutauschen. MapTiler, Mapbox, HERE usw. verfügen ebenfalls über einen Konstruktor derselben Form.

05 · Hinweis auf die Quelle (attributionRules)

Wenn Sie eigene Tiles verwenden, geben Sie die Namensbedingungen des Tile-Anbieters als Regeln an. Nur die erforderlichen Hinweise werden basierend auf Zoom und Anzeigebereich der Kamera automatisch ausgewählt.

attribution
Der anzuzeigende String. Sie können auch HTML mit Links übergeben.
minZoom / maxZoom
Der Zoombereich, in dem der Hinweis angezeigt wird. Außerhalb des Bereichs wird er automatisch ausgeblendet.
bounds
Der rechteckige Bereich, in dem der Hinweis angezeigt wird. Wird z. B. bei Tiles in Japan verwendet.

06 · Beispiel-App

Alle 3 Plattformen enthalten eine UI zum Umschalten des Designs. Der Aufbau der UI ist auf jeder Plattform eine geradlinige Implementierung, nur die Zuweisungslogik ist gemeinsam.

Map design ▾
ANDROID · ExposedDropdownMenu
Map design ⌄
iOS · SwiftUI Menu
<select>
REACT · map-design-selector
Implementierung im Video · Android + MapLibreKotlin · Jetpack Compose
val mapViewState = rememberMapLibreMapViewState(
    mapDesign = MapLibreDesign.DemoTiles,
    cameraPosition = MapCameraPosition(
        position = GeoPoint.fromLatLong(21.382314, -157.933097),
        zoom = 12.0,
    ),
)

val designs = listOf(
    "Demo" to MapLibreDesign.DemoTiles,
    "OSM Bright" to MapLibreDesign.OsmBrightJa,
    "Toner" to MapLibreDesign.MapTilerTonerJa,
)

MapLibreMapView(state = mapViewState, modifier = Modifier.weight(1f))

Row {
    designs.forEach { (label, design) ->
        // Just an assignment. The map is not rebuilt, so the camera stays where it is
        Button(onClick = { mapViewState.mapDesignType = design }) { Text(label) }
    }
}
Beispielvideo · Design wechseln
Video noch nicht aufgenommenSie wechseln mapDesignType auf derselben Karte, und die Presets werden nacheinander angewendet. Der Moment des Wechsels selbst ist der Kernpunkt.

Verwandte Seiten