引入BaseTileLayer 来创建TMSLayer对象。
ArcGIS JS API 本身不带有 TMSLayer 对象,但可以使用 BaseTileLayer 的 createSubclass 方法定义一个 TMSLayer 。我们需要给 TMSLayer 定义一个 urlTemplate 属性并重写getTileUrl方法。 核心在于 : 在重写 getTileUrl 方法时,对 y 轴编号做转置处理。 通过这一步告知 ArcGIS API 请求瓦片时,哪个才是正确的瓦片编号。 代码如下:
let TMSLayer = BaseTileLayer.createSubclass({
properties: {
urlTemplate: null
},
getTileUrl: function (z, y, x) {
let y2 = Math.pow(2, z) - y - 1;
return this.urlTemplate
.replace("{z}", z)
.replace("{x}", x)
.replace("{y}", y2);
},
});
let tmsLayer = new TMSLayer({
urlTemplate: "http://localhost:xxx/{z}/{x}/{y}.png"
});
this.localMap=new Basemap({
baseLayers: [tmsLayer],
});
将离线的切片服务加载
imgMapClick() {
if (shows == true) {
this.basicMap.esriMap.basemap = this.localMap;
}
}
本文介绍了如何在ArcGISJSAPI中利用BaseTileLayer创建TMSLayer,重点在于重写getTileUrl方法处理y轴编号,以适应TMS瓦片请求。并通过urlTemplate指定服务地址,实现离线切片服务的加载。
1430





