瓦片加载不支持非标准切片。
如果使用官网的瓦片链接加载失败,可以打开 netWork 查看是否 key 的问题,是的话则需要进行替换,参考常见问题 - 第 3 方 token 有问题
# 如何更换加载的底图
map.basemap = 瓦片id || 瓦片name;
# 怎么加载其他坐标的瓦片?
首先需要了解下坐标系,可查看开发教程 - 基础知识点 - 坐标系及坐标变换
确定下自身服务时什么坐标系,比如是大地 2000,可添加crs参数
crs: "EPSG:4490";
# 加载时瓦片没有铺满全球
如果遇到这个提示,则表示有范围限制,可以询问下提供服务的人员,让其修改下
# 如何设置偏移量
// 该方法演示地图内部需要设置偏移量时如何加载
tileLayer = new mars3d.layer.XyzLayer({
url: "'url'&z={z_2}&y={y}&x={x}",
customTags: {
z_2: function (imageryProvider, x, y, level) {
return level - 2;
},
},
});
map.addLayer(tileLayer);
2
3
4
5
6
7
8
9
10
# 瓦片贴模型有问题,且注记有点模糊
目前已知的问题:
多个图层调整时会全部重新渲染;
目前不支持 EPSG:3857 Web 墨卡托投影坐标系的瓦片进行贴模型。
模糊问题 :注记层如果是自己的服务,可以发布到 21 级来避免拉伸 18 层的数据,就模糊了、
# 有的瓦片加载变的模糊,如高德
因为三维地图 webgl 的渲染机制不一样,是将图片重新 canves 绘制到 webgl 中。而高德、openlayer、leaflet 等二维地图是直接显示图片的,所以清晰些。
# 瓦片在南北极缺一个圆是怎么回事
web 墨卡托投影都会缺这个,加个 4326 的底图或图片放在下面;
顶部的那个圆圈的坐标系范围大概 85-90
# 有些瓦片发送的参数在 newWork 中显示有问题
如 ArcGisLayer 瓦片的花括号没有被转义、WmtsLayer 瓦片的 queryParameters 参数被编码
可参考下面代码类似修改下
Cesium.Resource.ReplaceUrl = function (url) {
if (
url.startsWith(
"http://server.mars3d.cn/arcgis/rest/services/mars/guihua/MapServer"
)
) {
return url.replace(/\{/gm, "%200").replace(/\}/gm, "%20");
} else {
return url;
}
};
2
3
4
5
6
7
8
9
10
11
# xyzLayer xyz 瓦片不支持单击事件嘛?但 api 中显示有
基类的代表所有的,但并不是所有的子类都有,目前仅 wmts、wms、arcgis 图层具备单击事件。
xyz 图层需要 enablePickFeatures、pickFeaturesUrl、getFeatureInfoFormats 等参数配置后才支持单击
# imageLayer 图片过大比如说 60M,加载不出来,显示黑屏
webgl 的图片分辨率不得超过 4096 像素,目前没法处理。
# 加载 wms 等服务需要注意的有哪些
wms 只支持 4326、3857、4490 的标准切片,其他坐标系不支持
对应级别 tilematrix 找到的瓦片 tilerow&tilecol 这两个参数使用常见报错无效参考: https://blog.csdn.net/m0_69803146/article/details/135129924?spm=1001.2014.3001.5502
通用标准的服务,一般都是服务的支持或参数问题,具体细调服务的话,根据服务的 xml 服务描述信息进行调试测试,例如: http://mars3d.cn/editor-vue.html?key=ex_3_2_3&id=layer-tile/type/wms
如果服务请求的时候还涉及该大小写的话,参考//改 wms 请求的大小写
Cesium.Resource.ReplaceUrl = function (url) {
if (this.\_url.startsWith("//server.mars3d.cn/geoserver/mars/wms")) {
return url.replaceAll("bbox", "BBOX")
} else {
return url
}
}
2
3
4
5
6
7
# ArcGisLayer ArcGis 瓦片
# 如何修改服务本身的样式?
ArcGisLayer 不支持,是服务端渲染后的图片,加载到客户端显示的。
可以用 ArcGisWfsSingleLayer 或 ArcGisWfsLayer 来加载方式 symbol 配置颜色。
# WMTSLayer WMTS 瓦片
# format 是 application/json;type=geojson 类型的无法加载
这个属于 wfs,这种需要定制开发矢量瓦片(渲染为图片) 或按矢量数据显示 解析规则
# 无法配置 tilematrix 参数
加参数 tileMatrixSetID:"EPSG:4326_plyx:"
# 如何自定义校验,比如时间校验
使用 customTags 参数
url: "'url'&z={z_2}&y={y}&Created={time}",
customTags: {
time: function (imageryProvider, x, y, level) {
return new Date().getTime();
},
},
2
3
4
5
6
# 如何配置 tilerow、tilecol 两个参数
是自动计算的,可以设置 rectangle 边界参数
# 如何加载自定义 popup
- 如果有对应的 wms 服务,可以参考示例加代码支持 popup
- 如果没有,需要加 click 事件做相关查询处理,查询数据返回后自行构造 Popup 对象弹窗显示即可。
# WMSLayer WMS 瓦片
# 可以添加移动事件嘛
理论上是可以加的,但是效率太差,移动时一直在查询服务,单击是单击一次查询一次更合理。