把公开的 XYZ / WMTS 服务接进 Cesium,报错通常集中在六类问题上。下面按"先看现象、再定原因、最后改配置"的顺序整理,每条都能在一次刷新里验证。

一、地址模板的顺序
现象:地球上有图,但错位,或者说瓦片拼不起来。
原因:{z}/{x}/{y} 的顺序写反。XYZ 服务和 WMTS 的 GoogleMapsCompatible 矩阵集,行列号语义并不完全一致,前者常见 {z}/{x}/{y},后者常写作 {z}/{y}/{x}。
判断:把级别固定到 z=3,手工拼几个瓦片地址,看返回的图是不是同一片区域。
改法:按服务文档的模板填,不要拿另一个服务的模板直接套;改完先在小比例尺下看四块瓦片能否严丝合缝。
二、子域名占位符
现象:一开始正常,切换视角后大片空白,或者某些区域一直加载不出来。
原因:{s} 写成了固定子域,单域名并发被限速。
判断:把 {s} 依次替换成 a、b、c,单独请求,看是否都返回 200。
改法:保留 {s} 占位,由加载器轮询;不要手工改成固定域名。
三、token 与鉴权
现象:控制台 200,但返回的是提示图片,或者直接 403。
原因:部分服务地址必须带 token 或 key,公开示例里的 key 有时效和配额。
判断:把完整地址贴到新标签页打开,看返回的是影像还是提示图。
改法:自己申请 key 后替换,别把示例 key 当成长期可用。
四、跨域
现象:控制台报跨域错误,画面全空。
原因:服务端没有返回允许跨域的响应头。
判断:看报错里的 CORS 字段,确认是响应头缺失还是重定向。
改法:能换镜像就换镜像;换不了,只能通过同源的代理转发,且代理层要保留缓存头。

五、层级上限
现象:放大到某一级后,画面糊成一片,或者一直转圈。
原因:请求超过了该服务的最大级别。
判断:读服务的 capabilities,确认 maximumLevel;再看请求的 z 是否越界。
改法:在图层配置里限制 maximumLevel,让引擎不再往上请求。
六、投影
现象:图层整体偏到高纬,形状被拉长。
原因:数据不是 Web Mercator,硬套到 3857 的球面上。
判断:看服务的 spatial reference,以及瓦片的矩阵集定义。
改法:换用对应投影的加载方式,或者选同一投影体系的数据集;不要靠调位置把偏差"挪"回去,那只在局部看着对。

七、排查顺序建议
1)先确认服务本身能打开:新标签页直连一个瓦片地址。
2)再确认模板:固定级别,拼四块相邻瓦片。
3)再看控制台:区分 404、403、跨域、混合内容。
4)最后看投影与层级:形状对不对,越界没有。
按这个顺序,基本不会在样式上浪费时间。
八、结论
公开服务能覆盖大部分演示和教学场景,但它们由第三方维护,配额、条款和可用性都不由接入方决定。上线前把最大层级、缓存和降级方案写进配置,比事后找原因省时间。数据用在教学和科研没有问题,商业使用要先确认授权。