用途
ArcGIS REST Services 技能用于在 JavaScript 应用中调用 ArcGIS Server 的 REST 服务端点,通过 @arcgis/core/rest/* 命名空间访问路由、地理编码、空间查询、地理处理、打印、地点搜索等服务器端操作。
主要能力
该技能覆盖以下服务模块:
- Route(路径规划):在停靠点之间求解路径,支持障碍点与行驶方向。
- Closest Facility(最近设施):查找距离一组事件点最近的设施。
- Service Area(服务区):基于行驶时间或距离生成设施周围的服务区多边形。
- Locator(地理编码):地址转位置、位置转地址(反向地理编码)、位置建议(自动补全)。
- Query(REST 查询):直接针对要素服务端点查询要素,无需 FeatureLayer,支持 JSON、PBF、计数、范围、对象 ID 等返回形式。
- Find(查找):按属性值在地图服务中查找要素。
- Identify(识别):在地图服务的特定位置识别要素。
- Print(打印):通过服务器端打印服务将地图导出为 PDF、PNG 等格式。
- Places(地点):使用 ArcGIS Places 服务搜索兴趣点,支持按点附近查询、按范围查询、获取地点详情与分页。
- Geoprocessor(地理处理):在 ArcGIS Server 上运行自定义地理处理任务,支持同步与异步(长时间运行)执行。
- Geometry Service(几何服务):执行服务器端几何操作,如投影、缓冲、面积与长度计算。
- Image Service(影像服务):对影像服务进行识别等操作。
- Last Mile Delivery(最后一公里配送):求解带取货/送货约束的车辆路径问题。
使用方式
所有 REST 服务函数接受服务 URL 作为第一个参数、参数对象作为第二个参数:
const result = await serviceName.methodName(serviceUrl, params);
导入方式有两种:
直接 ESM 导入:
import * as route from "@arcgis/core/rest/route.js";
import * as locator from "@arcgis/core/rest/locator.js";
import * as query from "@arcgis/core/rest/query.js";
import RouteParameters from "@arcgis/core/rest/support/RouteParameters.js";
import FeatureSet from "@arcgis/core/rest/support/FeatureSet.js";
import Query from "@arcgis/core/rest/support/Query.js";
CDN 动态导入:
const route = await $arcgis.import("@arcgis/core/rest/route.js");
const locator = await $arcgis.import("@arcgis/core/rest/locator.js");
const [query, Query] = await $arcgis.import([
"@arcgis/core/rest/query.js",
"@arcgis/core/rest/support/Query.js",
]);
每个 REST 服务都有各自的参数类,例如 RouteParameters 用于 route、ClosestFacilityParameters 用于 closestFacility。
认证
高级服务(路由、地理编码、地点)需要认证。可全局设置 API 密钥:
import esriConfig from "@arcgis/core/config.js";
esriConfig.apiKey = "YOUR_API_KEY";
或为特定服务器注册令牌:
import esriId from "@arcgis/core/identity/IdentityManager.js";
esriId.registerToken({
server: "https://route-api.arcgis.com",
token: "YOUR_TOKEN",
});
适用场景
适用于需要在 JavaScript 应用中集成 ArcGIS 在线服务的开发者,例如:计算行驶路线与方向、地址与坐标互转、地址自动补全、直接查询要素服务、在地图上识别要素、导出地图为 PDF/PNG、搜索兴趣点、运行地理处理任务、执行投影与缓冲等几何操作、影像识别、车辆路径规划等。
限制与注意事项
- 高级服务(路由、地点、地理编码)需要 API 密钥或 OAuth 令牌,需在请求前设置 esriConfig.apiKey。
- 每个 REST 服务有各自的参数类,使用错误的类会导致静默失败。
- 结果默认使用服务的空间参考,应始终在参数上设置 outSpatialReference 以匹配视图。
- 应使用 try/catch 包裹 REST 调用以处理服务错误,包括 AbortError(请求被取消)。
- 旧的 esri/tasks/* 模式已被移除,应使用 @arcgis/core/rest/* 模块的静态函数调用。
- 关于收费、价格、平台支持范围等具体信息,资料中暂未提供。