Dodawanie warstwy kafelka do mapy (zestaw Android SDK)
Uwaga
Wycofanie zestawu SDK systemu Android w usłudze Azure Maps
Zestaw SDK natywny usługi Azure Maps dla systemu Android jest teraz przestarzały i zostanie wycofany w dniu 3/31/25. Aby uniknąć przerw w działaniu usługi, przeprowadź migrację do zestawu Web SDK usługi Azure Maps przez 3/31/25. Aby uzyskać więcej informacji, zobacz Przewodnik migracji zestawu SDK systemu Android usługi Azure Maps.
W tym artykule pokazano, jak renderować warstwę kafelka na mapie przy użyciu zestawu SDK systemu Android usługi Azure Maps. Warstwy kafelków umożliwiają zastępowanie obrazów na kafelkach mapy podstawowej usługi Azure Maps. Więcej informacji na temat systemu układania kafelków w usłudze Azure Maps można znaleźć w dokumentacji dotyczącej poziomów powiększenia i siatki kafelków.
Warstwa kafelka ładuje się kafelkami z serwera. Te obrazy mogą być wstępnie wstępnie przechowywane i przechowywane jak każdy inny obraz na serwerze przy użyciu konwencji nazewnictwa, którą rozumie warstwa kafelka. Te obrazy można również renderować za pomocą usługi dynamicznej, która generuje obrazy niemal w czasie rzeczywistym. Istnieją trzy różne konwencje nazewnictwa usług kafelków obsługiwane przez klasę TileLayer usługi Azure Maps:
- X, Y, Notacja powiększenia — na podstawie poziomu powiększenia x to kolumna, a y — pozycja wiersza kafelka w siatce kafelków.
- Notacja quadkey — kombinacja x, y, powiększanie informacji o pojedynczej wartości ciągu, która jest unikatowym identyfikatorem kafelka.
- Pole ograniczenia — współrzędne pola ograniczenia mogą służyć do określania obrazu w formacie
{west},{south},{east},{north}
, który jest często używany przez usługi mapowania sieci Web (WMS).
Napiwek
Element TileLayer to doskonały sposób wizualizacji dużych zestawów danych na mapie. Nie tylko warstwę kafelka można wygenerować na podstawie obrazu, ale także dane wektorowe mogą być renderowane jako warstwa kafelka. Dzięki renderowaniu danych wektorów jako warstwy kafelków kontrolka mapy musi ładować kafelki, które mogą być znacznie mniejsze niż dane wektorowe, które reprezentują. Ta technika jest używana przez wielu, którzy muszą renderować miliony wierszy danych na mapie.
Adres URL kafelka przekazany do warstwy kafelka musi być adresem URL http/https do zasobu TileJSON lub szablonu adresu URL kafelka, który używa następujących parametrów:
{x}
- X położenie kafelka. Ponadto wymaga{y}
i{z}
.{y}
- Y położenie kafelka. Ponadto wymaga{x}
i{z}
.{z}
- Poziom powiększenia kafelka. Ponadto wymaga{x}
i{y}
.{quadkey}
- Identyfikator czworokąta kafelka oparty na konwencji nazewnictwa systemu kafelków mapy Bing.{bbox-epsg-3857}
- Ciąg pola ograniczenia z formatem{west},{south},{east},{north}
w systemie odniesienia przestrzennego EPSG 3857.{subdomain}
— Symbol zastępczy wartości poddomeny, jeśli określono wartość poddomeny.azmapsdomain.invalid
— Symbol zastępczy służący do wyrównania domeny i uwierzytelniania żądań kafelków z tymi samymi wartościami używanymi przez mapę. Użyj tej funkcji podczas wywoływania usługi kafelków hostowanej przez usługę Azure Maps.
Wymagania wstępne
Aby ukończyć proces w tym artykule, musisz zainstalować zestaw SDK systemu Android usługi Azure Maps, aby załadować mapę.
Dodawanie warstwy kafelka do mapy
W tym przykładzie pokazano, jak utworzyć warstwę kafelka wskazującą zestaw kafelków. W tym przykładzie użyto systemu "x, y, zoom". Źródłem tej warstwy kafelka jest projekt OpenSeaMap, który zawiera wykresy morskie ze źródłami tłumu. Często podczas wyświetlania warstw kafelków pożądane jest, aby móc wyraźnie zobaczyć etykiety miast na mapie. To zachowanie można osiągnąć, wstawiając warstwę kafelka poniżej warstw etykiet mapy.
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")
Poniższy zrzut ekranu przedstawia powyższy kod przedstawiający warstwę kafelków informacji morskich na mapie, która ma ciemny styl skali szarości.
Dodawanie usługi mapowania sieci Web OGC (WMS)
Usługa mapowania sieci Web (WMTS) to standard Open Geospatial Consortium (OGC) służący do obsługi obrazów danych mapy. Istnieje wiele otwartych zestawów danych dostępnych w tym formacie, których można używać z usługą Azure Maps. Tego typu usługi można używać z warstwą kafelka, jeśli usługa obsługuje EPSG:3857
system odwołania współrzędnych (CRS). W przypadku korzystania z usługi WMS ustaw parametry szerokości i wysokości na wartość obsługiwaną przez usługę, pamiętaj, aby ustawić tę samą wartość w tileSize
opcji . W sformatowany adres URL ustaw BBOX
parametr usługi za pomocą symbolu zastępczego {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")
Poniższy zrzut ekranu przedstawia powyższy kod przedstawiający usługę internetowego mapowania danych geologicznych z US Geological Survey (USGS) na mapie poniżej etykiet.
Dodawanie usługi kafelka mapowania sieci Web OGC (WMTS)
Usługa kafelków mapowania sieci Web (WMTS) to standard Open Geospatial Consortium (OGC) obsługujący nakładki oparte na kafelkach dla map. Istnieje wiele otwartych zestawów danych dostępnych w tym formacie, których można używać z usługą Azure Maps. Tego typu usługi można używać z warstwą kafelka, jeśli usługa obsługuje EPSG:3857
system odniesienia lub GoogleMapsCompatible
współrzędnych (CRS). W przypadku korzystania z usługi WMTS ustaw parametry szerokości i wysokości na wartość obsługiwaną przez usługę, pamiętaj, aby ustawić tę samą wartość w tileSize
opcji . W sformatowany adres URL zastąp następujące symbole zastępcze odpowiednio:
{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")
Poniższy zrzut ekranu przedstawia powyższy kod przedstawiający usługę kafelków mapowania internetowego obrazów z mapy krajowej USGS (USGS) National Survey (USGS) na mapie pod drogami i etykietami.
Następne kroki
Zapoznaj się z poniższym artykułem, aby dowiedzieć się więcej o sposobach nakładania obrazów na mapie.