需求:
加载arcgis没有公开或者私有的地图服务,同时还想实现加载时不弹出登录窗口
提示:
下述是针对独立的arcgis server,没有portal的应用场景;
如果有portal可以参考链接:https://mp.weixin.qq.com/s/WB09URxnPkaW9RvjHqAoSg
补充:
如果按照下述代码还弹窗,请确保通信协议保持统一,例如都使用https后者http
代码:
<html><head><meta charset="utf-8" /><metaname="viewport"content="initial-scale=1, maximum-scale=1, user-scalable=no"/><title>hello</title><style>html,body,#viewDiv {padding: 0;margin: 0;height: 100%;width: 100%;}</style><linkrel="stylesheet"href="https://js.arcgis.com/4.27/esri/themes/light/main.css"/><script src="https://js.arcgis.com/4.27/"></script><script>require(["esri/config","esri/WebMap","esri/views/MapView","esri/layers/FeatureLayer","esri/identity/IdentityManager","esri/identity/ServerInfo",], function (esriConfig,Map,MapView,FeatureLayer,IdentityManager,ServerInfo) {let serverInfo = new ServerInfo({hasServer: true,server: "https://192.168.17.138:6443/arcgis/rest/services",tokenServiceUrl:"https://192.168.17.138:6443/arcgis/tokens/generateToken",});let userInfo = {username: "siteadmin",password: "arcgis123",};IdentityManager.generateToken(serverInfo, userInfo).then((res) => {console.log(res);IdentityManager.registerToken({server: "https://192.168.17.138:6443/arcgis/rest/services",token: res.token,});let layer = new FeatureLayer({url: "https://192.168.17.138:6443/arcgis/rest/services/china/MapServer/0",});const map = new Map({layers: [layer],});const view = new MapView({map: map,container: "viewDiv",});view.when(function () {view.extent = layer.fullExtent;});},(error) => {console.error(error);});});</script></head><body><div id="viewDiv"></div></body>
</html>
参考资料:
arcgis中基于token访问私有服务