Multiple vector tile sources

You can consume content from multiple vector tile sources in a single vector tile map layer that references each source in one vector tile style. You can mix and match content from existing vector tile layers without having to create or host duplicate vector tile data for each new combination. Maintaining and combining separate vector tile layers in this way can also make frequent updating of each layer more convenient.

By consuming content from multiple vector tile sources, you can do the following:

  • Inject additional vector tile content into Esri vector basemaps
  • Replace layers from Esri vector basemaps with your content
  • Combine content from the Living Atlas, ArcGIS Online, and ArcGIS Enterprise

Vector tile style updates

In the underlying vector tile style JSON code, the sources property contains multiple vector type sources instead of a single vector type source.

In the example below, there are two vector tile sources. The first is named "esri". It contains street map data for the city of Redlands. The second source is named "contours". It contains contours for the Redlands area. Each layer in the vector tile style will reference one of these sources.

"sources": {
    "esri": {
      "type": "vector",
      "url": "https://tiles.arcgis.com/tiles/8cv2FuXuWSfF0nbL/arcgis/rest/services/Redlands_streetmap/VectorTileServer"
    },
    "contours": {
      "type": "vector",
      "url": "https://tiles.arcgis.com/tiles/8cv2FuXuWSfF0nbL/arcgis/rest/services/Redlands_contours/VectorTileServer"
    }
  },

Combining vector tile services

You can combine different vector tile services with different properties. The following list describes valid combinations:

  • You can combine vector tile services published to ArcGIS Online or ArcGIS Enterprise.
  • Each vector tile source in a vector tile style must have the same tiling scheme and spatial reference, but their maximum level of detail can be different.
  • You can combine vector tile services with different extents. The vector tile layer renders as the union of all the extents.
  • You can combine vector tiles services with INDEXED or FLAT vector tile formats.

Example: Combining Esri's A Children's Map with Streets

Using multiple sources, you can inject any content into an existing Esri vector tile basemap.

In this example, "streets" is injected into A Children's Map from the Living Atlas.

Children's Map
A portion of Esri's A Children's Map.

This map does not have a layer for streets in its style. By editing a copy of the vector tile style for it, the "streets" tile source can be added to the sources property. Then new layers can be added to the style that reference the new "streets" source.

Children's Map with streets
A portion of Esri's A Children's Map combined with the Streets tile source.

Vector Tile Sources

"sources": {
    "esri": {
      "type": "vector",
      "url": "https://tiles.arcgis.com/tiles/P3ePLMYs2RVChkJx/arcgis/rest/services/Esri_Childrens_Map/VectorTileServer"
    },
    "streets": {
      "type": "vector",
      "url": "https://<portal_name>/server/rest/services/Hosted/streets/VectorTileServer"
    }
},

Vector Tile Layers in Style JSON

"layers" : [{
    "id" : "Land/Not ice",
    "type" : "fill",
    "source" : "esri",
    "source-layer" : "Land",
    "filter" : ["==", "_symbol", 0],
    "layout" : {},
    "paint" : {
	"fill-color" : "#F2EFCC"
	}
    }, {
    "id" : "roads1",
    "type" : "line",
    "source" : "streets",
    "source-layer" : "street",
    "minzoom" : 4,
    "layout" : {
    	"line-join" : "round"
        	},
    "paint" : {
	"line-color" : "#B9B7B9",
	"line-width" : 3.33333
	}
    }, {
    "id" : "roads2",
    "type" : "line",
    "source" : "streets",
    "source-layer" : "street",
    "minzoom" : 4,
    "layout" : {
 	"line-join" : "round"
	},
    "paint" : {
	"line-color" : "#E1E1E1",
	"line-width" : 1.33333
	}
    },

Related topics