ArcGIS API for JavaScript 4.x 免登录调用arcgis online私有服务
前言
本来以为普通用户调用服务只能依靠登录,仔细研究了一下可以通过key来实现免登录调用服务。
背景
最近在做一个BIM结合GIS的Demo,先通过arcgis pro将.rvt文件配准到实际位置,然后打包成slpk文件,拖拽到arcgis online发布出来,最后在前端加载。
环境
arcgis pro 3.0.0
Revit 2021
arcgis api for jacvascipt 4.24
Win10
问题
01.免费版的online只能发布私有服务,调用私有服务需要登录arcgis online账号
02. 自己发布的服务无法删除:
03.续订日期才能恢复服务
所谓的续订服务的日期大概就是这个吧
解决方案
既然只能发布私有服务,那只能使用api key来解决免登录问题。
进入开发者仪盘表(Dashboard ),发现有一个默认的api-key,可以使用这个key,但我觉得自己新建一个比较好。
方案一,使用现有默认key:
①单击View Usage
②进入Overview,找到右下角的"Set content item scopes"
③选中需要绑定的服务,然后单击右下角Add items
④结果
⑤如果需要,还可以限制访问的域名
方案二,新建api-key
①单击左上角新增api key
②设置名称和描述
③后面的步骤跟方案一相同了:
代码部分:

const addBIM = (view) => { /** * apiKey可以在esriConfig设置,也可以在BuildingSceneLayer里面设置 */ const apiKey="AAPK1457dc3f91554c6fbde4a85e9826f27bszcOiZPFXyTkT3DClwZbHFvPNvSPNffmWyEF2rfpCeVV5osoQxdS";//此key已经删除一部分,仅作示例用 // esriConfig.apiKey = apiKey; const buildingLayer = new BuildingSceneLayer({ url: "https://tiles.arcgis.com/tiles/pDXnn9eULK5uzFWf/arcgis/rest/services/wjschoolrvt/SceneServer", title: "BIM图层", apiKey:apiKey }); view.map.layers.add(buildingLayer); view.goTo({ center: [120.602, 31.145], heading: 10, zoom: 20, tilt: 45 }) view.popup.autoOpenEnabled = false; // Get the screen point from the view's click event view.on("click", function (event) { // Search for graphics at the clicked location. View events can be used // as screen locations as they expose an x,y coordinate that conforms // to the ScreenPoint definition. view.hitTest(event).then(function (response) { let result = response.results[0]; if (result) { let lon = result.mapPoint.longitude; let lat = result.mapPoint.latitude; console.log("Hit graphic at (" + lon + ", " + lat + ")", result.graphic); } else { console.log("Did not hit any graphic"); } }); }); }
参考网址
01.Set location service scopes(设置api key的关联的服务)
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· Vue3状态管理终极指南:Pinia保姆级教程
2017-12-26 C# Winform同一子窗体只允许打开一次