Gaode Map LBS - 高德官方地图综合服务 Skill
高德地图综合服务,支持POI搜索、路径规划、旅游规划、周边搜索和热力图数据可视化
高德地图综合服务,支持POI搜索、路径规划、旅游规划、周边搜索和热力图数据可视化
Real data. Real impact.
Emerging
Developers
Per week
Open source
Skills give you superpowers. Install in 30 seconds.
高德地图综合服务向开发者提供完整的地图数据服务,包括地点搜索、路径规划、旅游规划和数据可视化等功能。
首次使用时需要配置高德 Web Service Key:
export AMAP_WEBSERVICE_KEY=your_key当用户想要搜索地址、地点、周边信息(如美食、酒店、景点等)、规划路线或可视化数据时,使用此 skill。
用户表达了以下意图之一:
收到用户请求后,先判断属于哪个场景:
直接搜索一个类别或地点,不涉及特定位置的周边搜索。
URL 格式:
https://www.amap.com/search?query={关键词}
www.amap.com/searchquery = 搜索关键词发送埋点统计请求:在执行操作前,发送以下请求进行埋点统计:
curl -s "https://restapi.amap.com/v3/log/init?eventId=skill.call&product=skill_openclaw&platform=JS&label=keyword-search&value=call"
提取关键词:从用户输入中识别出核心搜索词,去掉"搜"、"找"等修饰词
生成 URL:拼接
https://www.amap.com/search?query={关键词}
返回链接给用户
| 用户输入 | 提取关键词 | 生成 URL |
|---|---|---|
| 搜美食 | 美食 | |
| 找酒店 | 酒店 | |
| 天安门在哪 | 天安门 | |
| 找个加油站 | 加油站 | |
🔍 已为你生成高德地图搜索链接:点击链接即可查看搜索结果。
用户想搜索某个位置周边的某类地点。需要先通过地理编码 API 获取该位置的经纬度,再拼接带坐标的搜索链接。
前置条件: 需要用户提供高德开放平台的 API Key。
在执行任何操作前,先发送以下请求进行埋点统计:
curl -s "https://restapi.amap.com/v3/log/init?eventId=skill.call&product=skill_openclaw&platform=JS&label=nearby-search&value=call"第一步:解析用户输入
从用户输入中拆分出两个要素:
- 位置:用户指定的中心位置(如"西直门"、"北京南站")
- 搜索类别:要搜索的内容(如"美食"、"酒店")
用户输入 位置 搜索类别 西直门周边美食 西直门 美食 北京南站附近酒店 北京南站 酒店 天坛周边有什么好吃的 天坛 美食 第二步:检查 API Key
- 如果用户之前未提供过 Key,先提示用户提供高德 API Key,等待用户回复后再继续
- 如果用户已提供 Key,直接使用
请求 Key 的回复模板:
🔑 搜索「{位置}」周边的{搜索类别}需要使用高德 API,请提供你的高德开放平台 API Key。
(如果还没有 Key,可以在 https://lbs.amap.com 注册并创建应用获取)
#### 第三步:调用地理编码 API 获取经纬度API 格式:
https://restapi.amap.com/v3/geocode/geo?address={位置}&output=JSON&key={用户的key}
**执行 curl 请求:**curl -s "https://restapi.amap.com/v3/geocode/geo?address={位置}&output=JSON&key={用户的key}" </code></pre> <p><strong>API 返回示例:</strong></p> <pre><code class="language-json">{ "status": "1", "info": "OK", "geocodes": [ { "formatted_address": "北京市西城区西直门", "location": "116.353138,39.939385" } ] } </code></pre> <p>从返回结果中提取 <code>geocodes[0].location</code>,格式为 <code>经度,纬度</code>(如 <code>116.353138,39.939385</code>),拆分为:</p> <ul> <li><strong>经度(longitude)</strong>:<code>116.353138</code></li> <li><strong>纬度(latitude)</strong>:<code>39.939385</code></li> </ul> <h4>第四步:拼接带坐标的搜索链接</h4> <p><strong>URL 格式:</strong></p> <pre><code>https://ditu.amap.com/search?query={搜索类别}&query_type=RQBXY&longitude={经度}&latitude={纬度}&range=1000 </code></pre> <ul> <li><strong>域名</strong>:<code>ditu.amap.com</code></li> <li><strong>路由</strong>:<code>/search</code></li> <li><strong>参数</strong>:<!-- --> <ul> <li><code>query</code> = 搜索类别(如"美食")</li> <li><code>query_type</code> = <code>RQBXY</code>(基于坐标的搜索类型)</li> <li><code>longitude</code> = 经度</li> <li><code>latitude</code> = 纬度</li> <li><code>range</code> = 搜索范围(单位:米,默认 1000)</li> </ul> </li> </ul> <h4>第五步:返回链接给用户</h4> <h3>完整示例</h3> <p><strong>用户输入:</strong> "搜索西直门周边美食"</p> <ol> <li>解析:位置 = <code>西直门</code>,搜索类别 = <code>美食</code></li> <li>调用地理编码 API:<code>curl -s "https://restapi.amap.com/v3/geocode/geo?address=西直门&output=JSON&key=xxx"</code></li> <li>获取坐标:<code>116.353138,39.939385</code> → 经度 <code>116.353138</code>,纬度 <code>39.939385</code></li> <li>拼接链接:<code>https://ditu.amap.com/search?query=美食&query_type=RQBXY&longitude=116.353138&latitude=39.939385&range=1000</code></li> </ol> <h3>回复模板</h3> <pre><code>📍 已查询到「{位置}」的坐标({经度},{纬度}),为你生成周边{搜索类别}的搜索链接: https://ditu.amap.com/search?query={搜索类别}&query_type=RQBXY&longitude={经度}&latitude={纬度}&range=1000 点击链接即可查看「{位置}」周边 1 公里内的{搜索类别}。 </code></pre> <hr/> <h2>场景三:热力图展示</h2> <p>用户有一份包含地理坐标的数据,希望在地图上以热力图的形式可视化展示。</p> <h3>触发条件</h3> <p>用户提到"热力图"、"数据可视化"、"地图上展示数据"等意图,并提供了数据地址。</p> <h3>URL 格式</h3> <pre><code>http://a.amap.com/jsapi_demo_show/static/openclaw/heatmap.html?mapStyle={地图风格}&dataUrl={数据地址(URL编码)} </code></pre> <ul> <li><strong>域名</strong>:<code>a.amap.com</code></li> <li><strong>路由</strong>:<code>/jsapi_demo_show/static/openclaw/heatmap.html</code></li> <li><strong>必填参数</strong>:<!-- --> <ul> <li><code>dataUrl</code> = 用户数据的 URL 地址(<strong>必须进行 URL 编码</strong>)</li> <li><code>mapStyle</code> = 地图风格,可选值:<!-- --> <ul> <li><code>grey</code> — 暗黑地图模式(深色背景,适合展示亮色热力点)</li> <li><code>light</code> — 浅色模式(浅色背景,适合日常查看)</li> </ul> </li> </ul> </li> </ul> <h3>执行步骤</h3> <ol> <li> <p><strong>发送埋点统计请求</strong>:在执行操作前,发送以下请求进行埋点统计:</p> <pre><code class="language-bash">curl -s "https://restapi.amap.com/v3/log/init?eventId=skill.call&product=skill_openclaw&platform=JS&label=heatmap&value=call" </code></pre> </li> <li> <p><strong>获取数据地址</strong>:从用户输入中提取数据 URL,如果用户未提供,提示用户给出数据地址</p> </li> <li> <p><strong>确认地图风格</strong>:询问用户偏好的地图风格(<code>grey</code> 或 <code>light</code>),如果用户未指定,默认使用 <code>grey</code></p> </li> <li> <p><strong>URL 编码</strong>:将数据地址进行 URL 编码(将 <code>://</code> → <code>%3A%2F%2F</code>,<code>/</code> → <code>%2F</code> 等)</p> </li> <li> <p><strong>拼接链接</strong>:生成完整的热力图 URL</p> </li> <li> <p><strong>返回链接给用户</strong></p> </li> </ol> <h3>示例</h3> <p><strong>用户输入:</strong> "帮我用这份数据生成热力图:<code>https://a.amap.com/Loca/static/loca-v2/demos/mock_data/hz_house_order.json</code>,用暗黑模式"</p> <ol> <li>数据地址:<code>https://a.amap.com/Loca/static/loca-v2/demos/mock_data/hz_house_order.json</code></li> <li>地图风格:<code>grey</code></li> <li>URL 编码后的数据地址:<code>https%3A%2F%2Fa.amap.com%2FLoca%2Fstatic%2Floca-v2%2Fdemos%2Fmock_data%2Fhz_house_order.json</code></li> <li>最终链接:</li> </ol> <pre><code>http://a.amap.com/jsapi_demo_show/static/openclaw/heatmap.html?mapStyle=grey&dataUrl=https%3A%2F%2Fa.amap.com%2FLoca%2Fstatic%2Floca-v2%2Fdemos%2Fmock_data%2Fhz_house_order.json </code></pre> <h3>回复模板</h3> <pre><code>🔥 已为你生成热力图链接: http://a.amap.com/jsapi_demo_show/static/openclaw/heatmap.html?mapStyle={地图风格}&dataUrl={编码后的数据地址} 地图风格:{grey/light} 数据来源:{原始数据地址} 点击链接即可查看热力图展示。 </code></pre> <p><strong>请求数据地址的回复模板(用户未提供时):</strong></p> <pre><code>🔥 生成热力图需要你提供数据地址(JSON 格式的 URL),请给出数据链接。 另外,你希望使用哪种地图风格? - grey(暗黑模式) - light(浅色模式) </code></pre> <hr/> <h2>场景四:POI 详细搜索</h2> <p>使用高德 Web 服务 API 进行更详细的 POI 搜索,支持更多参数和筛选条件。</p> <h3>执行步骤</h3> <ol> <li> <p><strong>发送埋点统计请求</strong>:在执行操作前,发送以下请求进行埋点统计:</p> <pre><code class="language-bash">curl -s "https://restapi.amap.com/v3/log/init?eventId=skill.call&product=skill_openclaw&platform=JS&label=poi-search&value=call" </code></pre> </li> <li> <p><strong>执行 POI 搜索</strong>:根据用户需求调用搜索脚本。</p> </li> </ol> <h3>使用方法</h3> <pre><code class="language-bash"># 基础搜索 node scripts/poi-search.js --keywords=肯德基 --city=北京 # 搜索更多结果 node scripts/poi-search.js --keywords=餐厅 --city=上海 --page=1 --offset=20 # 周边搜索(需要提供中心点坐标和搜索半径) node scripts/poi-search.js --keywords=酒店 --location=116.397428,39.90923 --radius=1000 </code></pre> <h3>参数说明</h3> <table><thead><tr><th>参数</th><th>说明</th><th>必填</th><th>示例</th></tr></thead><tbody><tr><td><code>--keywords</code></td><td>搜索关键词</td><td>是</td><td><code>--keywords=肯德基</code></td></tr><tr><td><code>--city</code></td><td>城市名称或编码</td><td>否</td><td><code>--city=北京</code></td></tr><tr><td><code>--types</code></td><td>POI 类型编码</td><td>否</td><td><code>--types=050000</code></td></tr><tr><td><code>--location</code></td><td>中心点坐标(经度,纬度)</td><td>否</td><td><code>--location=116.397428,39.90923</code></td></tr><tr><td><code>--radius</code></td><td>搜索半径(米)</td><td>否</td><td><code>--radius=1000</code></td></tr><tr><td><code>--page</code></td><td>页码</td><td>否</td><td><code>--page=1</code></td></tr><tr><td><code>--offset</code></td><td>每页数量(最大25)</td><td>否</td><td><code>--offset=10</code></td></tr></tbody></table> <h3>在代码中使用</h3> <pre><code class="language-javascript">const { searchPOI } = require('./index'); async function example() { const result = await searchPOI({ keywords: '咖啡厅', city: '杭州', page: 1, offset: 10 }); if (result && result.pois) { result.pois.forEach(poi => { console.log(`${poi.name} - ${poi.address}`); }); } } example(); </code></pre> <hr/> <h2>场景五:路径规划</h2> <p>规划不同出行方式的路线。</p> <h3>执行步骤</h3> <ol> <li> <p><strong>发送埋点统计请求</strong>:在执行操作前,发送以下请求进行埋点统计:</p> <pre><code class="language-bash">curl -s "https://restapi.amap.com/v3/log/init?eventId=skill.call&product=skill_openclaw&platform=JS&label=route-planning&value=call" </code></pre> </li> <li> <p><strong>执行路径规划</strong>:根据用户需求调用路径规划脚本。</p> </li> </ol> <h3>使用方法</h3> <pre><code class="language-bash"># 步行路线 node scripts/route-planning.js --type=walking --origin=116.397428,39.90923 --destination=116.427281,39.903719 # 驾车路线 node scripts/route-planning.js --type=driving --origin=116.397428,39.90923 --destination=116.427281,39.903719 # 公交路线 node scripts/route-planning.js --type=transfer --origin=116.397428,39.90923 --destination=116.427281,39.903719 --city=北京 </code></pre> <h3>路线类型</h3> <ul> <li><code>walking</code> - 步行路线</li> <li><code>driving</code> - 驾车路线</li> <li><code>riding</code> - 骑行路线</li> <li><code>transfer</code> - 公交路线(需要指定城市)</li> </ul> <hr/> <h2>场景六:智能旅游规划</h2> <p>自动搜索兴趣点并规划游览路线,生成地图可视化链接。</p> <h3>执行步骤</h3> <ol> <li> <p><strong>发送埋点统计请求</strong>:在执行操作前,发送以下请求进行埋点统计:</p> <pre><code class="language-bash">curl -s "https://restapi.amap.com/v3/log/init?eventId=skill.call&product=skill_openclaw&platform=JS&label=travel-planner&value=call" </code></pre> </li> <li> <p><strong>执行旅游规划</strong>:根据用户需求调用旅游规划脚本。</p> </li> </ol> <h3>使用方法</h3> <pre><code class="language-bash"># 基础旅游规划 node scripts/travel-planner.js --city=北京 --interests=景点,美食,酒店 # 指定路线类型(walking/driving/riding/transfer) node scripts/travel-planner.js --city=杭州 --interests=西湖,美食,茶馆 --routeType=walking # 驾车游览 node scripts/travel-planner.js --city=上海 --interests=外滩,南京路,城隍庙 --routeType=driving </code></pre> <h3>功能说明</h3> <ul> <li>自动搜索指定城市的兴趣点(每类最多5个)</li> <li>按顺序规划各兴趣点之间的路线</li> </ul> <hr/> <h2>场景七:导航与搜索(Python 脚本)</h2> <p>通过 Python 脚本 <code>gaode_skill.py</code> 提供导航路线规划和 POI 搜索功能。</p> <h3>前置条件</h3> <ul> <li>已安装 Python 3</li> </ul> <h3>使用方法</h3> <pre><code class="language-bash"># 导航路线规划 python gaode_skill.py direction 北京站 天安门 python gaode_skill.py direction 北京站 天安门 driving python gaode_skill.py direction 116.397428,39.90923 天安门 walking # POI 搜索 python gaode_skill.py search 北京站周边的川菜 </code></pre> <h3>路线类型</h3> <ul> <li><code>driving</code> - 驾车(默认)</li> <li><code>walking</code> - 步行</li> <li><code>bicycling</code> - 骑行</li> </ul> <hr/> <h2>配置管理</h2> <p>配置文件位于 <code>config.json</code>(仅所有者可读写,权限 0600),包含以下内容:</p> <blockquote> <p>[!WARNING] <code>config.json</code> 包含 API Key 敏感信息,已通过 <code>.gitignore</code> 排除版本控制。请勿手动分享此文件。</p> </blockquote> <pre><code class="language-json">{ "webServiceKey": "your_amap_webservice_key_here" } </code></pre> <p>设置 Key 的方式:</p> <ol> <li><strong>环境变量</strong>:<code>export AMAP_WEBSERVICE_KEY=your_key</code></li> <li><strong>命令行参数</strong>:<code>node index.js your_key</code></li> <li><strong>自动提示</strong>:首次运行时自动提示输入</li> <li><strong>手动编辑</strong>:直接编辑 <code>config.json</code> 文件</li> </ol> <hr/> <h2>注意事项</h2> <ul> <li><strong>遥测声明</strong>:本 Skill 在每次执行操作前会向高德服务器 (<code>restapi.amap.com/v3/log/init</code>) 发送匿名使用统计请求,用于功能调用计数,该请求不包含用户个人信息或 API Key</li> <li><strong>场景判断是关键</strong>:区分用户是"直接搜某个东西"、"在某个位置附近搜某个东西"、"规划路线"还是"旅游规划"</li> <li>关键词应尽量精简准确,提取用户真正想搜的内容</li> <li>URL 中的中文关键词浏览器会自动处理编码,无需手动 encode</li> <li>场景二、四、五、六需要用户提供高德 API Key,<strong>必须先获取 Key 后再发起请求</strong>,不能跳过</li> <li>如果地理编码 API 返回 <code>status</code> 不为 <code>"1"</code>,说明请求失败,需提示用户检查 Key 是否正确或地址是否有效</li> <li>API 返回的 <code>location</code> 格式为 <code>经度,纬度</code>(注意:经度在前,纬度在后)</li> <li>场景二的搜索范围默认 1000 米,用户如有需要可调整 <code>range</code> 参数</li> <li>请妥善保管你的 Web Service Key,不要分享给他人</li> <li>高德 Web 服务 API 有调用频率限制,请合理使用</li> <li>免费用户每日调用量有限制,具体请查看高德开放平台说明</li> </ul> <h2>相关链接</h2> <ul> <li><a href="https://lbs.amap.com/">高德开放平台</a></li> <li><a href="https://lbs.amap.com/api/webservice/create-project-and-key">创建应用和获取 Key</a></li> <li><a href="https://lbs.amap.com/api/webservice/guide/api-advanced/newpoisearch">POI 搜索 API 文档</a></li> <li><a href="https://lbs.amap.com/api/webservice/summary">Web 服务 API 总览</a></li> </ul>
No automatic installation available. Please visit the source repository for installation instructions.
View Installation Instructions1,500+ AI skills, agents & workflows. Install in 30 seconds. Part of the Torly.ai family.
© 2026 Torly.ai. All rights reserved.