**
ArcGIS JS API for Javascript 3.x自定义服务传参
**
场景:调用第三方提供的矢量切片图层,第三方为了安全,在服务路径中加了一个特殊的njtoken用来验证身份信息,当时的第一想法是在正常调用路径后面问号传参,
代码如下:
require([
'esri/map', "esri/layers/VectorTileLayer"
], function(Map, VectorTileLayer) {
const map = new Map('map', {
center: [118.795367, 31.921581],
zoom: 14,
logo: false,
showAttribution: false,
});
var vectorTileLayer = new VectorTileLayer("http://............../VectorTileServer?njtoken=12345678");
map.addLayer(vectorTileLayer,0);
});
实际上如果真的这么做,arcgis默认是识别不了njtoken的,查询路径只会是“http://…/VectorTileServer”
解决方法:经过多方查验,arcgis提供了专门的API,esri/request,可以实现该需求。
代码如下:
require([
'esri/map', "esri/layers/VectorTileLayer" ,"esri/request"
], function(Map, VectorTileLayer,esriRequest) {
const map = new Map('map', {
center: [118.795367, 31.921581],
zoom: 14,
logo: false,
showAttribution: false,
});
function myCallbackFunction(ioArgs:any) {
ioArgs.content = ioArgs.content || {};
ioArgs.content.njtoken = "12345678";
console.log(ioArgs.url, ioArgs.content);
return ioArgs;
}
esriRequest.setRequestPreCallback(myCallbackFunction);
var vectorTileLayer = new VectorTileLayer("http://............../VectorTileServer");
map.addLayer(vectorTileLayer,0);
});