Install
openclaw skills install @thcjp/amap-jsapi-tool-proopenclaw skills install @thcjp/amap-jsapi-tool-pro功能说明: 本技能涵盖 中文交互、化工作流场景 等核心能力。
专业版为企业开发者提供完整的高德地图JSAPI v2.0开发能力,在免费版基础功能之上,新增WebGL高级渲染、矢量图层管理、实时路况数据、批量地理编码、自定义地图样式、货车路径规划与公交导航等企业级功能。专业版完全兼容免费版接口,已有免费版代码可无缝升级,适合商业级地图应用开发.
| 优势 | 说明 |
|---|---|
| 无限调用 | 不受每日5000次限制 |
| 矢量图层 | 支持海量数据点渲染 |
| 实时路况 | 实时交通状况与事件推送 |
| 批量处理 | 批量地理编码与路径规划 |
| 自定义样式 | 完全自定义地图视觉风格 |
| 货车导航 | 货车专用路径规划(限高限重) |
| 高级分析 | 等时圈、热力图、行政区边界 |
| 优先支持 | 专属技术支持与SLA保障 |
详细代码示例已移至
references/detail.md
处理: 解析WebGL高级渲染与矢量图层(专业版独有)的输入参数,完成核心逻辑,返回结构化响应. 输出: 返回WebGL高级渲染与矢量图层(专业版独有)的响应数据,包含状态码、结果和日志.
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| input | string | 是 | 高德地图JSAPI专业版处理的输入数据或指令 |
| options | object | 否 | 附加配置选项,如模式选择、格式偏好等 |
| callback_url | string | 否 | 异步处理完成后的回调通知URL |
// 实时路况图层
function enableTraffic(map) {
const trafficLayer = new AMap.TileLayer.Traffic({
zIndex: 10,
autoRefresh: true, // 自动刷新
interval: 180 // 刷新间隔(秒)
});
trafficLayer.setMap(map);
return trafficLayer;
}
// ...
// 路况查询
function queryRoadCondition(roadName, city) {
AMap.plugin('AMap.RoadSearch', function() {
const roadSearch = new AMap.RoadSearch({
city: city,
panel: 'roadPanel'
});
roadSearch.searchByRoadName(roadName, function(status, result) {
if (status === 'complete') {
result.info.forEach(info => {
console.log(`路段: ${info.name}`);
log(` 状态: ${info.status}`);
log(` 方向: ${info.direction}`);
log(` 拥堵程度: ${info.congestion}`);
});
}
});
});
}
// ...
// 使用示例
const traffic = enableTraffic(map);
queryRoadCondition('建国路', '北京');
处理: 解析实时路况数据(专业版独有)的输入参数,完成核心逻辑,返回结构化响应. 输出: 返回实时路况数据(专业版独有)的响应数据,包含状态码、结果和日志.
input_params参数,支持创建/查询/导出操作处理: 解析批量地理编码(专业版独有)的输入参数,完成核心逻辑,返回结构化响应. 输出: 返回批量地理编码(专业版独有)的响应数据,包含状态码、结果和日志.
// 货车专用路径规划(考虑限高限重)
function truckRoute(origin, destination, truckInfo) {
AMap.plugin('AMap.TruckDriving', function() {
const truckDriving = new AMap.TruckDriving({
map: map,
policy: AMap.TruckDrivingPolicy.LEAST_DISTANCE,
size: truckInfo.size || 1, // 车型: 1-4
width: truckInfo.width, // 车宽(米)
height: truckInfo.height, // 车高(米)
load: truckInfo.load, // 载重(吨)
weight: truckInfo.weight // 车重(吨)
});
// ...
truckDriving.search(
[{ lnglat: origin }, { lnglat: destination }],
function(status, result) {
if (status === 'complete') {
const route = result.routes[0];
log(` 总距离: ${(route.distance / 1000).toFixed(1)}公里`);
log(` 预计时间: ${Math.ceil(route.time / 60)}分钟`);
log(` 收费路段: ${route.tolls}元`);
}
}
);
});
}
// ...
// 使用示例:2型货车(中型)
truckRoute(
[116.481028, 39.996729], // 北京望京
[121.473701, 31.230416], // 上海陆家嘴
{ size: 2, width: 2.5, height: 3.0, load: 10, weight: 5 }
);
处理: 解析货车路径规划(专业版独有)的输入参数,完成核心逻辑,返回结构化响应. 输出: 返回货车路径规划(专业版独有)的响应数据,包含状态码、结果和日志.
input_params参数,支持创建/查询/导出操作// 使用自定义地图样式
function applyCustomStyle(map, styleId) {
map.setMapStyle('amap://styles/' + styleId);
}
// ...
// 支持的自定义样式
const customStyles = {
darkBlue: 'amap://styles/darkblue', // 深蓝主题
fresh: 'amap://styles/fresh', // 清新主题
grey: 'amap://styles/grey', // 灰色主题
graffiti: 'amap://styles/graffiti', // 涂鸦主题
macaron: 'amap://styles/macaron', // 马卡龙主题
blue: 'amap://styles/blue', // 蓝色主题
dark: 'amap://styles/dark', // 暗黑主题
light: 'amap://styles/light', // 轻盈主题
whitesmoke: 'amap://styles/whitesmoke' // 远山黛主题
};
// ...
// 使用示例
applyCustomStyle(map, customStyles.dark);
处理: 解析自定义地图样式(专业版独有)的输入参数,完成核心逻辑,返回结构化响应. 输出: 返回自定义地图样式(专业版独有)的响应数据,包含状态码、结果和日志. 能力覆盖范围:本skill的核心能力覆盖以下场景关键词:企业级高德地图开、发平台、支持矢量图层、实时路况、批量地理编码、自定义样式与货车、适合商业级地图应、用开发、高德地图、JSAPI、开发助手专业版、为企业提供全方位、地图开发能力、核心能力、WebGL、高级渲染、矢量图层、自定义地图样式、货车路径规划、公交导航、适用场景、商业级地图应用、物流调度、位置服务、SaaS、智慧城市可视化、差异化、专业版兼容免费版、新增企业级数据处、理与高级渲染能力、满足商业场景需求、适用关键词、货车导航、amap、pro、vector、layer等.
input_params参数,支持创建/查询/导出操作// 物流调度:多点配送路径优化
function optimizeDeliveryRoute(warehouse, deliveryPoints) {
AMap.plugin('AMap.TruckDriving', function() {
map: map,
TruckDrivingPolicy.LEAST_DISTANCE,
size: 1
});
// ...
// 构造途经点
const points = [
{ lnglat: warehouse },
...deliveryPoints.map(p => ({ lnglat: p, name: '配送点' }))
];
// ...
search(points, function(status, result) {
if (status === 'complete') {
log('=== 配送路径优化 ===');
log(`配送点数量: ${deliveryPoints.length}`);
log(`总距离: ${(route.distance / 1000).toFixed(1)}公里`);
log(`预计时间: ${Math.ceil(route.time / 3600)}小时`);
log(`收费: ${route.tolls}元`);
// ...
// 显示配送顺序
route.steps.forEach((step, i) => {
log(` ${i+1}. ${step.instruction}`);
});
}
});
});
}
// ...
// 使用示例
optimizeDeliveryRoute(
[116.481028, 39.996729], // 仓库:北京望京
[
[116.397428, 39.90923], // 配送点1:天安门
[116.413384, 39.911023], // 配送点2:王府井
[116.377849, 39.915378] // 配送点3:西单
]
);
// 商圈热力图分析
function analyzeBusinessDistrict(map, poiData) {
// 1. 渲染热力图
const heatmap = new AMap.HeatMap(map, {
radius: 50,
opacity: [0, 0.8],
gradient: {
0.3: '#55a1ff',
0.6: '#55ff55',
0.8: '#ffaa00',
1.0: '#ff3333'
}
});
// ...
heatmap.setDataSet({ data: poiData, max: 1000 });
// ...
// 2. 渲染商圈边界
poiData.forEach(poi => {
if (poi.boundary) {
const polygon = new AMap.Polygon({
path: poi.boundary,
fillColor: '#1791fc',
fillOpacity: 0.2,
strokeColor: '#1791fc',
strokeWeight: 2
});
polygon.setMap(map);
}
});
// ...
// 3. 添加统计数据标注
poiData.forEach(poi => {
const marker = new AMap.Marker({
position: poi.center,
content: `<div style="padding:5px 10px; background:white; border-radius:4px;
box-shadow:0 2px 6px rgba(0,0,0,0.3); font-size:12px;">
<b>${poi.name}</b><br>
POI数量: ${poi.count}
</div>`,
offset: new AMap.Pixel(-50, -25)
});
marker.setMap(map);
});
}
// 等时圈:从某点出发,N分钟内可达范围
function reachabilityAnalysis(center, minutes) {
AMap.plugin('AMap.Driving', function() {
const driving = new AMap.Driving({
DrivingPolicy.LEAST_TIME
});
// ...
// 在中心点周围采样多个方向
const samplePoints = [];
for (let angle = 0; angle < 360; angle += 15) {
const rad = angle * Math.PI / 180;
const distance = minutes * 500; // 估算可达距离
const lng = center[0] + distance * Math.cos(rad) / 111000;
const lat = center[1] + distance * Math.sin(rad) / 111000;
samplePoints.push([lng, lat]);
}
// ...
// 查询每个方向的行驶时间
const reachablePoints = [];
let completed = 0;
// ...
driving.search(center, target, function(status, result) {
completed++;
if (status === 'complete') {
const time = result.routes[0].time / 60;
if (time <= minutes) {
reachablePoints.push(target);
}
}
if (completed === samplePoints.length) {
drawReachableArea(reachablePoints);
}
});
});
});
}
// ...
function drawReachableArea(points) {
path: points,
fillColor: '#00b38a',
strokeColor: '#00b38a',
strokeWeight: 2
});
polygon.setMap(map);
console.log(`等时圈已绘制,可达点数: ${points.length}`);
}
以下场景高德地图JSAPI专业版不适合处理:
需要数据分析、报表生成、统计洞察、数据可视化时使用。不适用于非本工具能力范围的需求.
// 免费版:基础地图
const map = new AMap.Map('container', { zoom: 12 });
// ...
// 专业版:启用高级功能
zoom: 12,
viewMode: '3D',
pitch: 45,
mapStyle: 'amap://styles/dark',
features: ['bg', 'road', 'building', 'point']
});
响应解析: 完成完成后,查看输出响应确认任务状态。成功时输出包含解析摘要和响应数据;失败时根据错误信息排查问题,查阅错误解析章节获取恢复步骤.
| 功能 | 免费版 | 专业版 | 说明 |
|---|---|---|---|
| 基础地图 | 支持 | 支持 | 2D/3D渲染 |
| 标注点 | 支持 | 支持 | Marker管理 |
| 热力图 | 不支持 | 支持 | 海量数据可视化 |
| 矢量图层 | 不支持 | 支持 | MassMarks |
| 实时路况 | 不支持 | 支持 | 交通状况 |
| 货车导航 | 不支持 | 支持 | 限高限重 |
| 批量地理编码 | 不支持 | 支持 | 批量地址转坐标 |
| 自定义样式 | 基础 | 完全自定义 | 地图视觉风格 |
| 行政区边界 | 不支持 | 支持 | 区域可视化 |
| 等时圈分析 | 不支持 | 支持 | 可达性分析 |
zoom: 14,
center: [116.397428, 39.90923],
viewMode: '3D', // 3D视图
pitch: 50, // 俯仰角(0-83)
rotation: 0, // 旋转角
showLabel: true, // 显示标签
showBuildingBlock: true, // 显示3D建筑
buildingAnimation: true // 建筑动画
});
完全兼容。专业版使用相同的JSAPI,仅需在平台后台开通专业版权限即可启用高级功能.
MassMarks支持10万级别数据点流畅渲染,配合缩放级别动态加载数据可进一步提升性能.
专业版单次批量建议不超过1000个地址,通过分批处理可处理更大规模数据.
支持4种车型(微型、轻型、中型、重型),可配置车宽、车高、载重等参数.
在高德开放平台的自定义样式编辑器中创建,获取样式ID后通过setMapStyle应用.
https://webapi.amap.com| 依赖项 | 类型 | 是否必需 | 获取方式 |
|---|---|---|---|
| AMap JSAPI | JavaScript库 | 必需 | 高德开放平台申请专业版Key |
| 浏览器 | 运行环境 | 必需 | 现代浏览器(支持WebGL) |
| HTTPS | 网络协议 | 必需 | 生产环境必须使用HTTPS |
| LLM API | API | 必需 | 由Agent内置LLM提供 |
window._AMapSecurityConfig 配置安全密钥| 错误场景 | 原因 | 处理方式 |
|---|---|---|
| 配置错误 | 参数缺失或格式错误 | 检查依赖说明中的配置要求 |
| 运行时错误 | 运行环境不满足 | 确认运行环境符合依赖说明 |
| 网络错误 | 连接超时或不可达 | 执行ping命令测试网络连通性,检查防火墙和代理设置连接后执行ping命令测试网络连通性,检查防火墙和代理设置连接后重新执行命令,参考国内替代方案 |
{
"success": true,
"data": {
"result": "高德地图JSAPI专业版处理结果",
"execution_time": "0.5s",
"metadata": {
"version": "1.0",
"processor": "amap jsapi pro"
}
},
"execution_log": ["解析输入参数", "执行核心处理", "格式化输出结果"],
"error": null
}
| 风险类型 | 防范措施 |
|---|---|
| API密钥泄露 | 通过环境变量配置,禁止硬编码到代码或配置文件中 |
| 命令执行风险 | 仅执行白名单命令,避免拼接用户输入到命令行参数中 |
| 网络通信安全 | 使用HTTPS协议,验证SSL证书有效性 |
| 敏感数据暴露 | 输出结果中不包含密钥、令牌等敏感信息 |
使用前请确认已阅读依赖说明章节,确保运行环境满足安全要求。
| 操作场景 | 手动耗时 | 自动化耗时 | 效率提升 |
|---|---|---|---|
| 文件解析与提取 | 5-10分钟/个 | <5秒/个 | 60-120x |
| 批量文件处理(100个) | 8-16小时 | <5分钟 | 96-192x |
| API调用与响应解析 | 2-3分钟/次 | <1秒/次 | 120-180x |
| 多接口数据聚合 | 15-30分钟 | <10秒 | 90-180x |
| 命令执行与结果收集 | 3-5分钟/次 | <2秒/次 | 90-150x |
| 重复任务批量执行 | 因任务而异 | 线性缩减 | 5-50x |
| 错误排查与修复 | 10-30分钟 | <30秒 | 20-60x |
| 对比维度 | 高德地图JSAPI专业版 | 传统手动方式 | 通用脚本工具 |
|---|---|---|---|
| 自动化程度 | 全流程自动 | 完全手动 | 部分自动 |
| 错误处理 | 内置错误恢复 | 依赖人工经验 | 基本try-catch |
| 可复用性 | 参数化配置 | 一次性脚本 | 模板化 |
| 安全合规 | 内置安全检查 | 无安全保障 | 无安全保障 |
| 适用场景 | 企业级高德地图开发平台,支持矢量图层、实时路况、批量地理编码、自定义样式与货车导 | 通用场景 | 通用场景 |