方法一:先尝试用arcgis api自带的WMTSLayer接,失败了。代码如下:
var layer = new WMTSLayer({
url: "https://api.mapbox.com/styles/v1/sugarmilk/ck63f88870ntd1ip892q0be49/wmts",
customParameters:{
"access_token":"token"
}
});
出现如下的问题,自带接口在getTile时,出现了两个token,导致请求不到瓦片
方法二:
1)在ArcMap中ArcCatalog的Add WMTS Server中将wmts服务接入。
2)在属性框中找到arcmap缓存瓦片的位置
3)在缓存处找到wmts的切片方案
4)自定义TiledMapServiceLayer拓展类
define(["dojo/_base/declare",
"esri/layers/TiledMapServiceLayer",
"esri/geometry/Extent",
"esri/SpatialReference",
"esri/layers/TileInfo"
], function (declare, TiledMapServiceLayer, Extent, SpatialReference, TileInfo) {
return declare(TiledMapServiceLayer, {
constructor: function () {
this.spatialReference = new SpatialReference({ wkid: 102100 });
this.initialExtent = (this.fullExtent = new Extent(-29332173.185461547 , -22041259.489622012 , 29329592.294180509, 22041259.489622019, this.spatialReference));
this.tileInfo = new TileInfo({
"rows": 512,
"cols": 512,
"compressionQuality": 90,
"origin": {
"x": -20037508.342789251,
"y": 20037508.342789251
},
"spatialReference": this.spatialReference,
"lods": [
{"level": "0","scale": 279541132.01435888,"resolution": 78271.516964030336},
{"level": "1","scale": 139770566.00717944,"resolution": 39135.758482015168},
{"level": "2", "scale": 69885283.00358972,"resolution": 19567.879241007584},
{"level": "3","scale": 34942641.50179486,"resolution": 9783.939620503792},
{"level": "4","scale": 17471320.75089743,"resolution": 4891.969810251896},
{"level": "5","scale": 8735660.3754487149,"resolution": 2445.984905125948},
{"level": "6","scale": 4367830.1877243575,"resolution": 1222.992452562974},
{"level": "7","scale": 2183915.0938621787,"resolution": 611.496226281487},
{"level": "8","scale": 1091957.5469310894,"resolution": 305.7481131407435},
{"level": "9","scale": 545978.77346554468,"resolution": 152.87405657037175},
{"level": "10","scale": 272989.38673277234,"resolution": 76.437028285185875},
{"level": "11","scale": 136494.69336638617,"resolution": 38.218514142592937},
{"level": "12","scale": 68247.346683193085,"resolution": 19.109257071296469},
{"level": "13","scale": 34123.673341596543,"resolution":9.5546285356482343},
{"level": "14","scale": 17061.836670798271,"resolution": 4.7773142678241172},
{"level": "15","scale": 8530.9183353991357,"resolution": 2.3886571339120586},
{"level": "16","scale": 4265.4591676995678,"resolution": 1.1943285669560293},
{"level": "17","scale": 2132.7295838497839,"resolution": 0.59716428347801465},
{"level": "18","scale": 1066.364791924892,"resolution": 0.29858214173900732}
]
});
this.loaded = true;
this.onLoad(this);
},
getTileUrl: function (level, row, col) {
return "https://api.mapbox.com/styles/v1/sugarmilk/ck63f88870ntd1ip892q0be49/tiles/"+level+"/"+col+"/"+row+"?access_token=你的token";
}
});
});
5)把类放到arcgis api 的layers下面,接口调用如下:
require([
"esri/map",
"esri/layers/mapbox",
"esri/SpatialReference",
"dojo/domReady!"
], function (
Map,
mapbox,
SpatialReference,
parser
) {
var map = new Map("map", {
});
var vecMap = new mapbox();
map.addLayer(vecMap);
});
6)预览效果
