您可以在单个矢量切片地图图层中使用来自多个矢量切片源的内容,该矢量切片地图图层将在一个矢量切片样式中引用每个源。您可以混合和匹配现有矢量切片图层中的内容,而无需针对每个新组合创建或托管重复的矢量切片数据。此外,通过这种方式维护和组合单独的矢量切片图层,也可以使每个图层的频繁更新更加方便。
通过使用来自多个矢量切片源的内容,您可以执行以下操作:
- 向 Esri 矢量底图加入其他矢量切片内容
- 将 Esri 矢量底图的图层替换为您的内容
- 组合来自 ArcGIS Living Atlas、ArcGIS Online 和 ArcGIS Enterprise 的内容
矢量切片样式更新
在基础矢量切片样式 JSON 代码中,sources 属性包含多个 vector 类型源而非单个 vector 类型源。
在以下示例中,存在两个矢量切片源。第一个名为 "esri"。它包含雷德兰兹市的街道地图数据。第二个源名为 "contours"。它包含雷德兰兹地区的等值线。矢量切片样式中的每个图层都将引用这些 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"
}
},
组合矢量切片服务
您可以组合具有不同属性的不同矢量切片服务。以下列表描述了有效组合:
- 您可以对发布到 ArcGIS Online 或 ArcGIS Enterprise 的矢量切片服务进行组合。
- 矢量切片样式中的每个矢量切片源必须具有相同的切片方案和空间参考,但它们的最高细节级别可以不同。
- 您可以组合具有不同范围的矢量切片服务。矢量切片图层将渲染为所有范围的并集。
- 您可以组合具有 INDEXED 或 FLAT 矢量切片格式的矢量切片服务。
示例:将 Esri 的 A Children's Map 与街道组合起来
您可以使用多个源将任何内容加入现有 Esri 矢量切片底图中。
在本示例中,"streets" 被加入到 ArcGIS Living Atlas 中的 A Children's Map。
此地图的样式中没有街道图层。通过为其编辑矢量切片样式的副本,可以将 "streets" 切片源添加到 sources 属性。然后,可以将新图层添加到引用了新 "streets" 源的样式。
矢量切片源
"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"
}
},
样式 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 }
},