使用ol-MapBox-Style为ArcGIS Server本地矢量瓦片设置样式的问题
olms加载本地部署ArcGIS Server矢量瓦片解决方案
核心思路
不要修改服务器上原始的root.json文件(会破坏ArcGIS JS API、原生OpenLayers加载逻辑),改为前端请求原始样式后做临时字段修正再传入olms。
具体操作步骤
- 第一步:前端请求原始样式文件时手动加
?f=json参数,确保拿到JSON格式响应 - 第二步:手动修正样式JSON的以下字段,再传给olms使用:
- 补全
sources.esri.url字段为完整矢量瓦片服务地址,不要带?f=json后缀 - 新增
sources.esri.tiles字段,值为服务的瓦片地址模板:https://bragdev3.gis.dk/arcgis/rest/services/Hosted/Plandistrikter2/VectorTileServer/tile/{z}/{y}/{x}.pbf - 将
sprite和glyphs的相对路径补为绝对路径,避免olms路径解析错误
- 补全
- 第三步:适配EPSG:25832自定义投影
- 提前通过proj4注册EPSG:25832投影
- 定义和ArcGIS Server发布时完全一致的tileGrid(包含原点、分辨率数组、对应缩放级别)
- 调用olms时传入自定义投影配置,确保瓦片的坐标转换、加载层级匹配
- 第四步:sprite报错处理
如果出现"No sprites found."错误,可直接将sprite的png、json资源下载到本地项目,将样式中sprite字段替换为本地资源路径即可。
验证逻辑
修改后的样式仅在当前olms加载逻辑中使用,不会修改服务器原始资源,不影响其他端的服务调用,可同时兼容原生OpenLayers加载、ArcGIS JS API加载的场景。
内容的提问来源于stack exchange,提问作者lars
相关产品推荐
相关产品推荐

