Documentos / Conceptos básicos / Capa ráster

Capa ráster

Especifique una plantilla de URL de mosaicos XYZ para superponer cualquier conjunto de mosaicos en el mapa. Puede usar mosaicos externos, como los mosaicos GSI, tal como están.

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

01 · Uso

Simplemente pase una plantilla de URL a la fuente. La transparencia y el rango de zoom se controlan en el lado de la capa.

RasterLayerScreen.kt · Jetpack Compose
val rasterLayerState = RasterLayerState(
    id = "gsi-raster",
    source = RasterLayerSource.UrlTemplate(
        template = "https://cyberjapandata.gsi.go.jp/xyz/relief/{z}/{x}/{y}.png",
        tileSize = 256,
        minZoom = 5,
        maxZoom = 15,
    ),
    opacity = 0.75f,
)

MapLibreMapView(state = mapState) {
    RasterLayer(rasterLayerState)
}

02 · Opciones principales

Option
Default
Descripción
template
Plantilla de URL de mosaico que incluye {z}/{x}/{y}.
tileSize
512
Número de píxeles en un lado del mosaico.
minZoom / maxZoom
Ninguno
Rango de zoom en el que se muestra la capa. Si no se especifica, se muestra en todos los niveles de zoom.
attributionRules
[]
Reglas de atribución según el zoom y el rango. Se especifica en `source`.
opacity
1.0
Opacidad de toda la capa (especificada en el lado de la capa).
visible
true
Alternar entre mostrar y ocultar.
zIndex
0
Orden de superposición con otras capas.
userAgent
MapConductor/…
User-Agent al obtener mosaicos. La compatibilidad depende del proveedor (consulte la tabla siguiente).
extraHeaders
Ninguno
Encabezados adicionales al obtener mosaicos, por ejemplo, tokens de autenticación. La compatibilidad depende del proveedor (consulte la tabla siguiente).

03 · Compatibilidad de encabezados

La obtención de mosaicos la realiza el SDK de mapas de cada proveedor; la posibilidad de reescribir solicitudes varía según el SDK. En los proveedores que no disponen de esta opción, las especificaciones se ignoran y se registran mensajes durante el tiempo de ejecución. La tabla siguiente muestra los resultados de verificar las solicitudes de mosaicos (nativo en dispositivos reales, web en el navegador).

En la web, `userAgent` no funciona en ningún proveedor. Esto se debe a que los navegadores prohíben sobrescribir el User-Agent y el SDK no puede evitarlo. La propiedad en sí se mantiene por compatibilidad con React Native; en RN el valor se pasa al SDK nativo y realmente funciona. Este es un diseño intencional para permitir que el mismo código se ejecute tanto en la web como en RN.

Provider
iOS
Android
Web(extraHeaders)
Notas
MapLibre
iOS usa `MLNNetworkConfiguration`, Android el reemplazo del cliente `OkHttp`, Web a través de `transformRequest` de `maplibre-gl`. En todos los casos, solo se incluyen en las solicitudes destinadas al host de distribución de mosaicos.
MapTiler
iOS utiliza el mismo mecanismo que MapLibre. Como el SDK de MapTiler para Android se ejecuta en una WebView, los encabezados no se pueden reemplazar desde el lado nativo.
MapKit
Proveedor exclusivo de iOS.
HERE
iOS utiliza un proxy local solo cuando se especifican encabezados (se añade un salto).
Google Maps
userAgent
Android obtiene mosaicos por sí mismo, por lo que se pueden usar ambos. `GMSURLTileLayer` de iOS solo expone `userAgent`, `extraHeaders` se ignora.
Mapbox
El SDK para iOS / Android no tiene una API pública para reescribir solicitudes. Dado que mapbox-gl en la Web tiene transformRequest, solo es compatible con Web.
ArcGIS
Lo mismo.
TomTom
Lo mismo.
Longdo
Lo mismo.
Leaflet
Solo para Web. Obtiene los mosaicos con fetch solo cuando se especifican encabezados y los reemplaza por blob.
OpenLayers
Solo para Web. Lo mismo (reemplazar tileLoadFunction).
Azure Maps
Solo para Web. A través de transformRequest.
Cesium
✓ (no medido)
Solo para Web. Es una implementación que pasa un Resource con headers, pero no se ha medido realmente debido a otro error en la aplicación de ejemplo.

Si utiliza un servidor de mosaicos que requiere encabezados, seleccione un proveedor compatible. Incluso con proveedores no compatibles, se puede utilizar si el token se incluye como un parámetro de consulta en la URL.

04 · Ejemplo

Ejemplo de mosaicos GSI

El ejemplo alterna entre el mapa de sombreado y el mapa estándar, y cambia la opacidad con un control deslizante. La atribución se cambia automáticamente mediante attributionRules.

Implementación en video · Android + MapLibreKotlin · Jetpack Compose
var opacity by remember { mutableFloatStateOf(0.75f) }
var relief by remember { mutableStateOf(true) }

val layerState = remember { RasterLayerState(id = "gsi-raster") }

// Both source and opacity can be reassigned; the layer is not rebuilt
LaunchedEffect(relief, opacity) {
    layerState.source = RasterLayerSource.UrlTemplate(
        template = if (relief) {
            "https://cyberjapandata.gsi.go.jp/xyz/relief/{z}/{x}/{y}.png"
        } else {
            "https://cyberjapandata.gsi.go.jp/xyz/std/{z}/{x}/{y}.png"
        },
        tileSize = 256,
        minZoom = 5,
        maxZoom = 15,
    )
    layerState.opacity = opacity
}

MapLibreMapView(state = mapViewState) {
    RasterLayer(layerState)
}

Slider(value = opacity, onValueChange = { opacity = it })
Switch(checked = relief, onCheckedChange = { relief = it })
Video de ejemplo · Superponer mosaicos ráster
Video aún no grabadoSuperponer un servidor de mosaicos externo y mostrar cómo los mosaicos se reemplazan según el nivel de zoom.

Páginas relacionadas