前言
本来以为普通用户调用服务只能依靠登录,仔细研究了一下可以通过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来解决免登录问题。
进入开发者仪盘表(DashboardAPI keys),发现有一个默认的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"); } }); }); }View Code
参考网址
01.Set location service scopes(设置api key的关联的服务)
标签:apiKey,服务,ArcGIS,JavaScript,arcgis,api,key,view From: https://www.cnblogs.com/youzi-xuchongyou/p/17928187.html