Aggiungere un livello riquadro a una mappa (Android SDK)
Nota
Ritiro di Android SDK di Mappe di Azure
Azure Maps Native SDK per Android è ora deprecato e verrà ritirato il 3/31/25. Per evitare interruzioni del servizio, eseguire la migrazione al Web SDK di Mappe di Azure entro il 31/3/25. Per altre informazioni, vedere La guida alla migrazione di Android SDK di Mappe di Azure.
Questo articolo mostra come eseguire il rendering di un livello riquadro tramite Android SDK di Mappe di Azure. I livelli riquadro consentono di sovrapporre immagini sopra i riquadri mappa di base in Mappe di Azure. Altre informazioni sul sistema di riquadri di Mappe di Azure sono reperibili nella documentazione Livelli di Zoom e griglia riquadri.
Un livello riquadro viene caricato nei riquadri da un server. È possibile eseguire il pre-rendering di queste immagini e archiviarle come qualsiasi altra immagine in un server utilizzando una convenzione di denominazione che il livello riquadro comprenda. In alternativa, è possibile eseguire il rendering di queste immagini utilizzando un servizio dinamico che genera le immagini quasi in tempo reale. Sono disponibili tre diverse convenzioni di denominazione per i servizi di riquadri supportate dalla classe TileLayer di Mappe di Azure:
- Notazione zoom di X, Y: in base al livello di zoom, x è la posizione nella colonna e y è la posizione nella riga del riquadro nella griglia dei riquadri.
- Notazione Quadkey: combinazione delle informazioni x, y e zoom in un singolo valore stringa che sia un identificatore univoco per un riquadro.
- Rettangolo di selezione: è possibile usare le coordinate del rettangolo di selezione per specificare un'immagine nel formato
{west},{south},{east},{north}
comunemente utilizzato dai servizi di mapping Web (WMS).
Suggerimento
TileLayer è un ottimo modo per visualizzare grandi set di dati sulla mappa. Non solo è possibile generare un livello riquadro da un'immagine, ma anche i dati vettoriali possono essere sottoposti a rendering come livello riquadro. Il rendering dei dati vettoriali come livello riquadro consente al controllo mappa di caricare solo i riquadri che possono essere molto più piccoli in termini di dimensione del file rispetto ai dati vettoriali che rappresentano. Molti utenti usano questa tecnica per eseguire il rendering di milioni di righe di dati sulla mappa.
L'URL di riquadro passato in un livello riquadro deve essere un URL http/https indirizzato a una risorsa TileJSON o un modello di URL di riquadro che usa i parametri seguenti:
{x}
- posizione X del riquadro. Necessita inoltre di{y}
e{z}
.{y}
- posizione Y del riquadro. Necessita inoltre di{x}
e{z}
.{z}
- Livello di zoom del riquadro. Necessita inoltre di{x}
e{y}
.{quadkey}
- Identificatore del riquadro quadkey basato sulla convenzione di denominazione del sistema di riquadri di Mappe di Bing.{bbox-epsg-3857}
- Una stringa del rettangolo delimitatore nel formato{west},{south},{east},{north}
nel sistema di riferimento spaziale EPSG 3857.{subdomain}
: segnaposto per i valori del sottodominio, se si specifica il valore del sottodominio.azmapsdomain.invalid
: segnaposto per l’allineamento del dominio e l’autenticazione delle richieste dei riquadri con gli stessi valori usati dalla mappa. Usare questa opzione quando si chiama un servizio di riquadri ospitato da Mappe di Azure.
Prerequisiti
Per completare la procedura descritta in questo articolo e caricare una mappa, è necessario installare Android SDK di Mappe di Azure.
Aggiungere un livello riquadro alla mappa
Questo esempio mostra come creare un livello riquadro che punta a una serie di riquadri. In questo esempio viene usato il sistema di riquadri "x, y e zoom". L'origine di questo livello riquadro è il progetto OpenSeaMap, che contiene grafici navali ottenuti mediante crowdsourcing. Spesso quando si visualizzano i livelli riquadri, è preferibile riuscire a visualizzare chiaramente le etichette delle città sulla mappa. Questo comportamento può essere ottenuto inserendo il livello riquadro sotto i livelli etichetta della mappa.
TileLayer layer = new TileLayer(
tileUrl("https://tiles.openseamap.org/seamark/{z}/{x}/{y}.png"),
opacity(0.8f),
tileSize(256),
minSourceZoom(7),
maxSourceZoom(17)
);
map.layers.add(layer, "labels");
val layer = TileLayer(
tileUrl("https://tiles.openseamap.org/seamark/{z}/{x}/{y}.png"),
opacity(0.8f),
tileSize(256),
minSourceZoom(7),
maxSourceZoom(17)
)
map.layers.add(layer, "labels")
Lo screenshot seguente mostra come il codice precedente consenta di visualizzare informazioni nautiche su una mappa a livello di riquadro con gradazioni di grigio scuro.
Aggiungere un servizio di mapping Web OGC (WMS)
Un servizio di mapping Web (WMTS) è uno standard OGC (Open Geospatial Consortium) per la gestione delle immagini dei dati delle mappe. Questo formato offre numerosi set di dati aperti utilizzabili con Mappe di Azure. È possibile usare questo tipo di servizio con un livello riquadro se il servizio supporta il sistema di riferimento di coordinate (CRS) EPSG:3857
. Quando si usa un servizio WMS, è necessario impostare i parametri di larghezza e altezza sul valore supportato dal servizio, assicurandosi di impostare lo stesso valore nell'opzione tileSize
. Nell'URL formattato impostare il parametro BBOX
del servizio con il segnaposto {bbox-epsg-3857}
.
TileLayer layer = new TileLayer(
tileUrl("https://mrdata.usgs.gov/services/gscworld?FORMAT=image/png&HEIGHT=1024&LAYERS=geology&REQUEST=GetMap&STYLES=default&TILED=true&TRANSPARENT=true&WIDTH=1024&VERSION=1.3.0&SERVICE=WMS&CRS=EPSG:3857&BBOX={bbox-epsg-3857}"),
tileSize(1024)
);
map.layers.add(layer, "labels");
val layer = TileLayer(
tileUrl("https://mrdata.usgs.gov/services/gscworld?FORMAT=image/png&HEIGHT=1024&LAYERS=geology&REQUEST=GetMap&STYLES=default&TILED=true&TRANSPARENT=true&WIDTH=1024&VERSION=1.3.0&SERVICE=WMS&CRS=EPSG:3857&BBOX={bbox-epsg-3857}"),
tileSize(1024)
)
map.layers.add(layer, "labels")
Lo screenshot seguente mostra come il codice precedente consenta di sovrapporre un servizio di mapping Web dei dati geologici dell’Istituto Geologico degli Stati Uniti (USGS) sopra una mappa e sotto le etichette.
Aggiungere un servizio di riquadri di mapping Web OGC (WMTS)
Un servizio di riquadri di mapping Web (WMTS) è uno standard OGC (Open Geospatial Consortium) per la gestione dei riquadri basato sulle sovrapposizioni per le mappe. Questo formato offre numerosi set di dati aperti utilizzabili con Mappe di Azure. È possibile usare questo tipo di servizio con un livello riquadro se il servizio supporta EPSG:3857
o il sistema di riferimento di coordinate (CRS)GoogleMapsCompatible
. Quando si usa un servizio WTMS, è necessario impostare i parametri di larghezza e altezza sul valore supportato dal servizio, assicurandosi di impostare lo stesso valore nell'opzione tileSize
. Nell'URL formattato sostituire quindi i segnaposto seguenti:
{TileMatrix}
=>{z}
{TileRow}
=>{y}
{TileCol}
=>{x}
TileLayer layer = new TileLayer(
tileUrl("https://basemap.nationalmap.gov/arcgis/rest/services/USGSImageryOnly/MapServer/WMTS/tile/1.0.0/USGSImageryOnly/default/GoogleMapsCompatible/{z}/{y}/{x}"),
tileSize(256),
bounds(-173.25000107492872, 0.0005794121990209753, 146.12527718104752, 71.506811402077),
maxSourceZoom(18)
);
map.layers.add(layer, "transit");
val layer = TileLayer(
tileUrl("https://basemap.nationalmap.gov/arcgis/rest/services/USGSImageryOnly/MapServer/WMTS/tile/1.0.0/USGSImageryOnly/default/GoogleMapsCompatible/{z}/{y}/{x}"),
tileSize(256),
bounds(-173.25000107492872, 0.0005794121990209753, 146.12527718104752, 71.506811402077),
maxSourceZoom(18)
)
map.layers.add(layer, "transit")
Lo screenshot seguente mostra come il codice precedente consenta di sovrapporre un servizio di riquadri di mapping Web delle immagini della Mappa nazionale dell’Istituto Geologico degli Stati Uniti (USGS) sopra una mappa, sotto le strade e le etichette.
Passaggi successivi
Per altre informazioni sui modi per sovrapporre immagini su una mappa, vedere l'articolo seguente.