Skip To Content ArcGIS for Developers Sign In Dashboard

ArcGISTiledLayer Class

class Esri::ArcGISRuntime::ArcGISTiledLayer

Displays data from a ArcGIS Map service, by using pre-generated tiles. More...

Header: #include <ArcGISTiledLayer>
Since: Esri::ArcGISRuntime 100.0
Inherits: Esri::ArcGISRuntime::ImageTiledLayer and Esri::ArcGISRuntime::RemoteResource

This class was introduced in Esri::ArcGISRuntime 100.0.

Public Functions

ArcGISTiledLayer(Esri::ArcGISRuntime::TileCache *tileCache, QObject *parent = nullptr)
ArcGISTiledLayer(Esri::ArcGISRuntime::Item *item, QObject *parent = nullptr)
ArcGISTiledLayer(const QUrl &url, Esri::ArcGISRuntime::Credential *credential, QObject *parent = nullptr)
ArcGISTiledLayer(const QUrl &url, QObject *parent = nullptr)
virtual ~ArcGISTiledLayer() override
Esri::ArcGISRuntime::ArcGISMapServiceInfo mapServiceInfo() const
quint64 refreshInterval() const
void setRefreshInterval(quint64 milliseconds)
Esri::ArcGISRuntime::TileCache *tileCache() const
QList<Esri::ArcGISRuntime::ArcGISSublayer *> tiledSublayers() const

Reimplemented Public Functions

virtual Esri::ArcGISRuntime::Credential *credential() const override
virtual Esri::ArcGISRuntime::RequestConfiguration requestConfiguration() const override
virtual void setRequestConfiguration(const Esri::ArcGISRuntime::RequestConfiguration &requestConfiguration) override
virtual QUrl url() const override

Detailed Description

ArcGIS tiled layers consume raster tiles provided by an ArcGIS service or a tile package. Raster tiles are cached by the server at various scales and the client can request the tiles needed at a particular map extent. You can use ExportTileCacheTask to generate and download tiles from the service, creating a tile package (.tpk/.tpkx). Alternatively, you can use ArcGIS Pro to create a map tile package and provision it to the device. See Take a layer offline for more information.

The number and content of these map tiles is defined by the service's tiling scheme and the map document that the service is based on. The tiling scheme specifies parameters such as tile dimensions, image format, scale levels, and so on. As you navigate the map, the layer fetches new map tiles to be displayed.

The spatial reference of an ArcGISTiledLayer must match the map's spatial reference. This is necessary because tiled layers display pre-generated map tiles that cannot be reprojected to match a different spatial reference.

Unlike ArcGISMapImageLayers, you cannot modify properties of an ArcGISTiledLayer to alter map contents. This is because the layer relies on a cached map service that does not create map images on-the-fly like a dynamic map service does.

Tiles are generated by the server only once when the service is originally created. Requests for tiles are made on multiple threads and handled asynchronously. The size of each returned tile increases as the resolution or complexity of the image in the tile increases. For example, high-resolution imagery tiles can be larger in file size than topographic mapping for the same area and map extent.

The ArcGISTiledLayer does not support re-projection, query, select, identify, or editing.

To construct an ArcGISTiledLayer, provide a URL to a map or image service's REST web service endpoint. You should verify that the service is indeed cached by checking that Single Fused Map Cache property in the Services Directory is set to true. An ArcGISTiledLayer will not work with map services that are not cached.

Alternatively, you can construct an ArcGISTiledLayer with a TileCache or path to a local tile cache.

Example:

Create an ArcGISTiledLayer from a URL to the REST endpoint of an tiled map service:

// create a new tiled layer
ArcGISTiledLayer* tiledLayer = new ArcGISTiledLayer(QUrl("https://services.arcgisonline.com/arcgis/rest/services/World_Topo_Map/MapServer"), this);
// create a new basemap instance with the tiled layer
Basemap* basemap = new Basemap(tiledLayer, this);
// create a new map instance
m_map = new Map(basemap, this);
// set map on the map view
m_mapView->setMap(m_map);

Alternatively, you can display tiles offline by creating an ArcGISTiledLayer from a local tile package (*.tpk):

TileCache* tileCache = new TileCache(m_dataPath + "tpk/SanFrancisco.tpk", this);
ArcGISTiledLayer* tiledLayer = new ArcGISTiledLayer(tileCache, this);
Basemap* basemap = new Basemap(tiledLayer, this);
m_map = new Map(basemap, this);

See sample: ArcGIS tiled layer (URL)

See also Layer and ImageTiledLayer.

Member Function Documentation

ArcGISTiledLayer::ArcGISTiledLayer(Esri::ArcGISRuntime::TileCache *tileCache, QObject *parent = nullptr)

Constructor that accepts a TileCache (tileCache) and an optional parent.

ArcGISTiledLayer::ArcGISTiledLayer(Esri::ArcGISRuntime::Item *item, QObject *parent = nullptr)

Constructor that accepts an item (item) and an optional parent.

ArcGISTiledLayer::ArcGISTiledLayer(const QUrl &url, Esri::ArcGISRuntime::Credential *credential, QObject *parent = nullptr)

Constructor that accepts the URL (url), a credential, and an optional parent.

Credential are applied if the provided URL is to a secured service.

ArcGISTiledLayer::ArcGISTiledLayer(const QUrl &url, QObject *parent = nullptr)

Constructor that accepts a URL (url) and an optional parent.

The URL can be to either an online service or a local tile cache. If the specified URL is a portal item URL the underlying PortalItem will be created and accessible through Layer::item.

[override virtual] ArcGISTiledLayer::~ArcGISTiledLayer()

Destructor.

[override virtual] Esri::ArcGISRuntime::Credential *ArcGISTiledLayer::credential() const

Reimplements: RemoteResource::credential() const.

Returns the security credential used to access the tiled service.

The credential is available if the service is secured.

Esri::ArcGISRuntime::ArcGISMapServiceInfo ArcGISTiledLayer::mapServiceInfo() const

Gets information about the service.

quint64 ArcGISTiledLayer::refreshInterval() const

Returns the refresh interval used by the layer, in milliseconds.

Layers request tiles from the service each time this interval elapses.

A value of 0 means to never refresh.

This function was introduced in Esri::ArcGISRuntime 100.1.

See also setRefreshInterval().

[override virtual] Esri::ArcGISRuntime::RequestConfiguration ArcGISTiledLayer::requestConfiguration() const

Reimplements: RemoteResource::requestConfiguration() const.

Returns the RequestConfiguration in use by this layer.

This function was introduced in Esri::ArcGISRuntime 100.1.

See also setRequestConfiguration().

void ArcGISTiledLayer::setRefreshInterval(quint64 milliseconds)

Sets the refresh interval used by the layer to milliseconds.

Layers request tiles from the service each time this interval elapses.

A value of 0 means to never refresh.

This function was introduced in Esri::ArcGISRuntime 100.1.

See also refreshInterval().

[override virtual] void ArcGISTiledLayer::setRequestConfiguration(const Esri::ArcGISRuntime::RequestConfiguration &requestConfiguration)

Reimplements: RemoteResource::setRequestConfiguration(const Esri::ArcGISRuntime::RequestConfiguration &requestConfiguration).

Sets requestConfiguration used for network requests sent by this layer.

This function was introduced in Esri::ArcGISRuntime 100.1.

See also requestConfiguration().

Esri::ArcGISRuntime::TileCache *ArcGISTiledLayer::tileCache() const

Gets the local tile cache.

Returns the TileCache, but only if this ArcGISTiledLayer was created from a local tile cache.

QList<Esri::ArcGISRuntime::ArcGISSublayer *> ArcGISTiledLayer::tiledSublayers() const

Gets a list of sublayers contained in the service.

[override virtual] QUrl ArcGISTiledLayer::url() const

Reimplements: RemoteResource::url() const.

Gets the URL of the layer's source.

The URL can refer to an online service or a path to a local tile cache.


Feedback on this topic?