一、从痛点到创意:一个真实场景的启发

作为一名经常组织朋友聚会的"社交达人",我遇到了一个看似简单却让人头疼的问题:每次约饭,大家都在问"在哪见?"

  • 张三住在回龙观,李四在东直门,王五在南四环,我在中关村 —— 四个人分散在北京四个方向
  • 提任何一个人的位置,其他人可能都要跑很远
  • 传统导航只能解决"怎么去",但无法回答"在哪汇合最公平"
  • 需要在地图 App、美食 App、微信群之间反复横跳

这个痛点让我想到了用 AI + 地图能力一站式解决这个问题。

创意的诞生

在 WorkBuddy 的帮助下,我从一开始的模糊想法逐步清晰:

“我想做一个多人聚会地点推荐的应用”

↓ WorkBuddy 引导分析

"建议定位为「AI 驱动的多人智能汇合出行规划平台」,核心功能包括:

  • 自然语言交互(用户用说话的方式描述需求)
  • 智能汇合点算法(计算最优集合点)
  • MCP Tool Calling 可视化(让 AI 的思考过程透明可见)
  • 腾讯地图 GL 3D 展示(专业的地图渲染能力)"

最终,「聚点智行」这个项目诞生了。


二、为什么选择 WorkBuddy?AI 辅助开发的真实体验

2.1 WorkBuddy 的核心能力

在整个开发过程中,WorkBuddy 扮演了多重角色:

角色 WorkBuddy 的贡献
技术顾问 推荐腾讯地图 GL、MCP Server 等技术选型
架构师 设计 AI Intent 识别层 → MCP Tool Calling → 地图可视化的三层架构
全栈工程师 生成 1400+ 行高质量 HTML/JS/CSS代码
文档助手 自动生成 README、功能报告、参赛材料

2.2 开发效率对比

如果纯手工开发这个项目,我预估需要:

  • 架构设计:2-3 天(查阅文档、技术方案设计)
  • 前端开发:5-7 天(地图集成、UI 实现、交互逻辑)
  • 算法实现:1-2 天(汇合点算法、路线规划)
  • 调试优化:2-3 天
  • 文档编写:1-2 天
  • 总计:11-17 天

使用 WorkBuddy 后:

  • 需求沟通 + 架构设计:1 小时(与 WorkBuddy 对话)
  • 代码生成 + 集成:2 小时(WorkBuddy 生成主体代码)
  • 调试优化:1 小时(本地预览、微调细节)
  • 文档生成:30 分钟(WorkBuddy 自动整理)
  • 总计:约 4.5 小时 ⏱️

效率提升:约 20-30 倍

使用对话界面如下所示:
在这里插入图片描述


三、技术架构演进:从 0 到 1 的设计过程

3.1 初始方案 vs 最终方案

最初的想法(我的原始需求):

用户输入地址 → 后台计算中心点 → 返回结果

WorkBuddy 引导的架构升级

经过与 WorkBuddy 的多轮对话,我们共同设计了更完善的架构:

┌─────────────────────────────────────────┐
│          用户交互层 (UI)                  │
│  自然语言输入框 + 快捷按钮 + 地图视图      │
└──────────────┬──────────────────────────┘
               │ 用户输入:"帮 4 个人找汇合点"
               ▼
┌─────────────────────────────────────────┐
│       AI Intent 识别层 (Agent)            │
│  意图分类:汇合/搜索/导航/热力/行程规划   │
└──────────────┬──────────────────────────┘
               │ Tool Calling (MCP 协议)
               ▼
┌─────────────────────────────────────────┐
│     腾讯位置服务 MCP Server               │
│  ┌──────────┐  ┌──────────────────┐    │
│  │ geocoder │  │ placeSearchNearby│    │
│  └──────────┘  └──────────────────┘    │
│  ┌──────────────────┐  ┌─────────┐    │
│  │ directionDriving │  │ matrix  │    │
│  └──────────────────┘  └─────────┘    │
│  ... 14+ 种地图工具                     │
└──────────────┬──────────────────────────┘
               │ 结构化数据返回
               ▼
┌─────────────────────────────────────────┐
│    腾讯地图 JavaScript API GL (渲染层)    │
│  • MultiMarker (高性能标记图层)           │
│  • MultiPolyline (路线绘制)              │
│  • MultiCircle (范围圆)                  │
│  • visualization.Heat (热力图)           │
│  • InfoWindow (信息弹窗)                 │
└─────────────────────────────────────────┘

3.2 关键技术决策

在与 WorkBuddy 的对话中,我们做了几个重要的技术决策:

决策 1:为什么选择腾讯地图 GL 而不是普通版?

我的疑问:“腾讯地图有普通版和 GL 版,有什么区别?”

WorkBuddy 的建议

"GL 版本支持 WebGL 硬件加速,适合以下场景:

  • 3D 建筑渲染(俯视视角效果震撼)
  • 大量标记点(MultiMarker 性能更好)
  • 热力图、矢量图层等高级可视化
  • 流畅的缩放、旋转动画

你的项目需要展示多人位置、路线连线、热力图等,强烈建议使用 GL 版本。"

最终选择https://map.qq.com/api/gljs?v=1.exp

决策 2:MCP Tool Calling 的价值

我的疑问:“为什么要用 MCP 协议?直接调 API 不行吗?”

WorkBuddy 的解释

"MCP (Model Context Protocol) 是 AI Agent 与外部工具通信的标准协议。使用 MCP 的好处:

  1. 标准化:所有工具调用都遵循统一格式
  2. 可追溯:AI 的每一步思考和工具调用都有日志
  3. 可扩展:新增工具只需注册到 MCP Server,无需修改前端
  4. 可视化:可以实时展示 AI 调用了哪些工具、返回了什么结果

这正是你项目的创新点:让用户看到 AI 如何思考。"

决策 3:零后端架构的可行性

我的担忧:“纯前端实现会不会不安全?Key 暴露怎么办?”

WorkBuddy 的方案

"可以通过以下方式降低风险:

  1. Referer 白名单:在腾讯位置服务控制台设置域名限制
  2. 配额管理:设置每日调用上限,防止恶意刷量
  3. 生产环境代理:正式部署时可用云函数做一层代理(CloudBase Function)

对于参赛作品和 Demo,纯前端架构的优势更明显:

  • 零运维成本
  • 快速迭代
  • 便于评委和用户体验"

执行效果如下:
在这里插入图片描述
在这里插入图片描述

四、核心功能实战:西直门一日行程完整案例

这是整个项目中最让我自豪的功能——AI 智能行程规划。让我用一个真实案例,带你完整体验 AI 是如何像真人管家一样思考的。

4.1 用户需求:一个典型的商务出行场景

我的输入

“我在西直门附近开会,4 月 1 日晚 -2 日晚住酒店,请帮我安排一天的吃喝住玩行程”

这个需求看似简单,实则需要 AI 理解多个隐含约束:

  • ✅ 会议地点在西直门(地理约束)
  • ✅ 住宿要在会议地点附近(步行可达)
  • ✅ 时间范围:4 月 2 日全天(时间约束)
  • ✅ 行程要包含:住宿、三餐、景点、交通(完整性约束)

4.2 AI 的思维链推理过程(10 步完整拆解)

第①步:解析用户需求

AI 思考

“用户需求:西直门附近开会,4 月 1 日晚 -2 日晚住酒店,需安排一天的吃喝住玩行程。关键约束:① 会议地点在西直门;② 住宿需在西直门附近(步行可达);③ 时间范围:4 月 2 日全天;④ 行程需包含:住宿推荐、三餐、游览景点、出行路线。”

调用工具geocoder - 解析「西直门」坐标

执行结果

📍 解析完成:西直门 → 坐标 (39.9434, 116.3497)
   位于北京西城区,地铁 2/4/13 号线交汇站

技术解读
这一步是地理编码(Geocoding),将自然语言中的地名转换为精确的经纬度坐标。西直门作为北京重要交通枢纽,坐标解析精度直接影响后续所有推荐的准确性。


第②步:检索周边住宿选项

AI 思考

“以西直门为中心,搜索 1km 范围内的酒店。筛选条件:交通便利、近会议地点、多价位覆盖(商务/经济/精品)。优先靠近地铁和主要商圈的选项。”

调用工具

  • placeSearchNearby - 周边酒店 POI 检索(radius=1000m)
  • placeDetail - 获取酒店详细信息

执行结果

🏨 找到 3 家推荐酒店:
   1. 凯悦嘉轩 (★★★★★) - 高端商务
   2. 如家 (★★★) - 经济型
   3. 展览路精品 (★★★★) - 特色民宿
   均在步行 5-15 分钟范围内

代码实现思路

// WorkBuddy 生成的周边搜索逻辑
async function searchNearbyHotels(center, radius = 1000) {
  const result = await mcpCall('placeSearchNearby', {
    keyword: '酒店',
    location: `${center.lat},${center.lng}`,
    radius: radius,
    page_size: 10,
  });
  
  // 过滤和排序:优先高评分、近距离
  return result.pois
    .filter(poi => poi.rating >= 4.0)
    .sort((a, b) => a.distance - b.distance);
}

第③步:推理住宿选择依据

AI 思考

“综合考虑:① 凯悦嘉轩最近(0.3km),设施最好,适合商务出行;② 如家性价比最高,近地铁 4 号线;③ 展览路精品安静,靠近动物园景区。根据开会场景,推荐凯悦嘉轩——既近会议地点,又方便第二天游览。”

推荐结果

✅ 推荐住宿:北京西直门凯悦嘉轩酒店
   💰 ¥688/晚(含早餐)
   📍 距会议地点 0.3km,步行 5 分钟
   🚇 近地铁 2/4/13 号线西直门站

推理逻辑
这是典型的多因素决策问题。AI 构建了一个简单的加权评分模型:

  • 距离权重 40%(越近越好)
  • 价格权重 30%(性价比)
  • 评分权重 20%(用户口碑)
  • 设施权重 10%(商务配套)

最终凯悦嘉轩综合得分最高。


第④步:规划早餐方案

AI 思考

“早餐时间:07:30-08:30。酒店含早餐可直接在酒店用餐;若想体验北京本地早餐,庆丰包子铺(0.4km)是性价比极高的选择,¥15/人,5 分钟步行可达。建议:如赶时间直接酒店早餐;如时间充裕体验庆丰包子。”

调用工具placeSearchNearby - 早餐 POI 搜索(keyword=早餐/包子)

执行结果

🥟 早餐方案(二选一):
   ① 酒店自助早餐(含早,免费)
   ② 庆丰包子铺 (0.4km, ¥15/人) — 北京人气早餐

人性化设计
AI 没有武断地只给一个答案,而是提供了弹性选择

  • 商务人士时间紧张 → 酒店早餐(省时)
  • 游客想体验当地文化 → 庆丰包子(体验感)

第⑤步:检索上午游览景点

AI 思考

“西直门附近步行/骑行可达的景点:北京动物园 (1.2km, 熊猫必看)、北京天文馆 (1.5km)、北京展览馆 (0.9km, 免费)。4 月份天气适宜,动物园户外活动最适合。天文馆适合午后球幕影院。规划路线:会议地点→动物园→天文馆,连续游览。”

调用工具

  • placeSearchNearby - 景区 POI 搜索(radius=3000m)
  • directionWalking - 步行路线规划:酒店→动物园

执行结果

🐼 上午行程:
   北京动物园 (9:00-11:30, 2.5 小时)
   ↓ 步行 1.2km 约 15 分钟
   北京天文馆 (12:30 参加球幕影院)

路线优化
这里 AI 运用了贪心算法思想:

  1. 优先选择知名度最高的景点(动物园熊猫馆)
  2. 选择邻近景点减少路途时间(天文馆紧邻动物园)
  3. 考虑开放时间匹配(动物园上午开放,天文馆下午有球幕电影)

第⑥步:安排午餐

AI 思考

“午餐时间约 12:00。动物园附近选项:园内餐厅(方便但偏贵);园外’胡同里的烤鸭’(1.1km, ¥120/人),正宗北京烤鸭,4 月旺季需提前预约。另一选项:附近便餐(¥40-60/人)节省时间。推荐:正宗北京烤鸭,符合’吃’的打卡感,适合 4 月旅行心情。”

调用工具placeSearchNearby - 午餐 POI 搜索(烤鸭/中餐厅)

执行结果

🦆 午餐推荐:胡同里的烤鸭
   💰 ¥120/人
   📍 动物园附近,步行 10 分钟
   💡 正宗北京烤鸭,建议提前预约

推荐策略
AI 在这里体现了场景化推荐的智慧:

  • 不是简单地找"最近的餐厅"
  • 而是考虑"来北京旅游必吃烤鸭"的文化属性
  • 价格适中(¥120/人),符合一日游预算

第⑦步:规划下午茶与漫游路线

AI 思考

“下午 14:00-17:00 是最舒适的游览时段。可选路线:① 沿展览路步行回西直门,途经北京展览馆(打卡苏式建筑);② 骑行/地铁南下去白塔寺历史街区(2.8km);③ 凯德购物中心休闲逛街。4 月春日,建议白塔寺文化路线 + 胡同打卡,体验老北京。Manner Coffee 下午茶很适合。”

调用工具

  • directionBicycling - 骑行路线:天文馆→白塔寺
  • placeSearchNearby - 咖啡/茶饮 下午茶选项

执行结果

🚴 下午路线:
   天文馆 → 白塔寺街区 (骑行 15min, 2.8km)
   ↓
   胡同漫游 (2 小时)
   ↓
   Manner Coffee 下午茶 (西直门凯德店)

体验设计
这段行程体现了 AI 对节奏把控的理解:

  • 上午体力充沛 → 步行较多(动物园 + 天文馆)
  • 午后容易疲劳 → 骑行减少体力消耗
  • 傍晚需要休息 → 咖啡厅小憩

第⑧步:安排晚餐

AI 思考

“晚餐时间 18:30-20:00。回到西直门附近,选项:① 海底捞 (凯德店,0.6km, ¥150/人)——服务好,适合放松;② 眉州东坡 (西四,1.8km, ¥90/人)——品质川菜;③ 西直门老北京涮肉 (0.2km, ¥80/人)——最近、本地特色。综合考虑:一日游后宜选安静舒适的涮肉,符合北京特色,且距酒店最近(步行 5 分钟)。”

调用工具

  • placeSearchNearby - 晚餐 POI 搜索(涮肉/火锅/中餐)
  • directionWalking - 步行:白塔寺→西直门涮肉

执行结果

🍲 晚餐推荐:西直门老北京涮肉
   💰 ¥80/人
   📍 距酒店步行 5 分钟
   💡 本地人推荐,正宗老北京味道

决策智慧
经过一天游玩,AI 选择了:

  • 最近(0.2km):减少最后一段路程负担
  • 最特色(老北京涮肉):强化旅行记忆点
  • 最舒适(非网红店):避免排队等待

第⑨步:计算全日行程路线总览

AI 思考

“汇总全天行程路线:酒店→动物园→天文馆→午餐→白塔寺→Manner→晚餐→回酒店。总步行/骑行距离约 8.5km,公交/地铁约 3 站,全程可步行 + 骑行 + 地铁混合出行。明天离店时,地铁 4 号线西直门站直达北京南站/首都机场等交通枢纽。”

调用工具

  • matrix - 多点距离矩阵计算
  • directionDriving - 全日路线汇总规划

执行结果

🗺️ 全日路线汇总:
   总距离:约 8.5km
   出行方式:步行 + 共享单车 + 地铁
   预计总出行时间:1.5 小时

技术亮点
这里使用了距离矩阵 API,一次性计算多个点之间的距离和耗时,避免了多次单独调用的开销。


第⑩步:生成结构化行程单

AI 思考

“将所有规划结果整合为结构化行程单,包含时间节点、地点、费用估算、交通方式。确保行程时间合理(不过于紧凑),留有弹性时间。总费用估算:住宿 688 + 餐饮约 310 + 景点 75 + 其他 50 ≈ ¥1,123/人。”

最终输出

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

📋 西直门一日行程单 · 4 月 1 日晚 -2 日晚
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
预计总费用:¥1,123/人

【4 月 1 日】
晚 🏨 入住酒店
   北京西直门凯悦嘉轩酒店 · ¥688/晚
   📍 距会议地点步行 5 分钟 · 含早餐

【4 月 2 日】
07:30 🥟 早餐
   庆丰包子铺 (0.4km) 或 酒店自助早餐
   💰 ¥15-60/人

09:30 🐼 北京动物园
   步行 15 分钟 (1.2km) · 游览 2 小时
   🎫 门票¥20 · 熊猫馆必去

12:00 🦆 午餐:北京烤鸭
   胡同里的烤鸭 (动物园旁 · 步行 10 分钟)
   💰 ¥120/人 · 提前预约

13:30 🔭 北京天文馆
   步行 5 分钟 (0.3km) · 球幕影院 1.5 小时
   🎫 门票¥35 · 建议预约场次

15:00 🚴 骑行至白塔寺
   共享单车骑行 15 分钟 (2.8km)
   ⛩️ 白塔寺历史街区·胡同漫游 2 小时

16:30 ☕ 下午茶
   Manner Coffee(西直门凯德) · ¥35/杯
   步行返回西直门途中

18:30 🍲 晚餐:老北京涮肉
   西直门老北京涮肉 (步行 5 分钟)
   💰 ¥80/人 · 本地特色

【4 月 2 日】
晚 🌙 继续住宿 / 离店
   酒店休息 · 4 号线西直门站可达北京南站/机场
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
💰 全日费用明细:
   住宿:¥688
   餐饮:¥310(早餐 15+ 午餐 120+ 下午茶 35+ 晚餐 80+ 其他 60)
   景点:¥75(动物园 20+ 天文馆 35+ 其他 20)
   交通:¥50(共享单车 + 地铁)
   总计:¥1,123/人

技术实现

// WorkBuddy 生成的行程单结构化数据
const itinerary = {
  title: '西直门一日行程单',
  dateRange: '4 月 1 日晚 -2 日晚',
  totalCost: 1123,
  items: [
    {
      time: '4 月 1 日 晚',
      type: 'accommodation',
      title: '入住酒店',
      name: '北京西直门凯悦嘉轩酒店',
      cost: 688,
      distance: '0.3km',
      tags: ['商务', '近地铁', '含早'],
    },
    {
      time: '07:30',
      type: 'meal',
      title: '早餐',
      options: [
        { name: '酒店自助早餐', cost: 0 },
        { name: '庆丰包子铺', cost: 15, distance: '0.4km' },
      ],
      tags: ['北京特色'],
    },
    // ... 更多节点
  ],
  costBreakdown: {
    accommodation: 688,
    meals: 310,
    attractions: 75,
    transport: 50,
  },
};

4.3 地图可视化效果

当 AI 完成上述 10 步推理后,腾讯地图 GL 引擎会自动执行以下渲染操作:

可视化元素

  1. 酒店标记(蓝色图钉):西直门凯悦嘉轩酒店位置
  2. 景点标记(绿色五角星):动物园、天文馆、白塔寺
  3. 餐厅标记(橙色刀叉图标):早餐、午餐、晚餐地点
  4. 路线连线
    • 步行路线(绿色实线)
    • 骑行路线(青色虚线)
    • 全程轨迹(蓝色箭头线)
  5. 信息窗口:点击每个标记显示详情(名称、费用、时间)

交互效果

  • 地图自动 fitBounds() 所有标记点,确保全部可见
  • 按时间顺序依次弹出标记动画,形成"故事线"
  • 右侧同步显示思维链推理过程卡片

当我第一次看到这个完整的行程规划时,真的被惊艳到了:

"这哪里是 AI,简直就是个贴心的私人旅行管家!

  • 不仅考虑了地理位置的合理性
  • 还考虑了时间节奏的舒适性
  • 甚至考虑了预算控制和文化体验

最重要的是,我能清楚看到 AI 是如何一步步思考的,这种透明感让我完全信任它的推荐。"


五、核心技术实现:WorkBuddy 如何帮我写代码

5.1 多人最优汇合点算法

这是项目的核心算法,需要找到一个位置使得所有人的出行距离之和最小。

我的原始想法
“取所有人位置的经纬度平均值?”

WorkBuddy 的实现

// WorkBuddy 生成的加权地理重心算法
function calcMeetingPoint(people) {
  // 基础版:几何中心
  const lat = people.reduce((sum, p) => sum + p.location.getLat(), 0) / people.length;
  const lng = people.reduce((sum, p) => sum + p.location.getLng(), 0) / people.length;
  return new TMap.LatLng(lat, lng);
}

// 进阶版:Haversine 球面距离(考虑地球曲率)
function haversineKm(a, b) {
  const R = 6371; // 地球半径 (km)
  const dLat = (b.getLat() - a.getLat()) * Math.PI / 180;
  const dLng = (b.getLng() - a.getLng()) * Math.PI / 180;
  const x = Math.sin(dLat/2)**2 +
    Math.cos(a.getLat()*Math.PI/180) * Math.cos(b.getLat()*Math.PI/180) * 
    Math.sin(dLng/2)**2;
  return R * 2 * Math.atan2(Math.sqrt(x), Math.sqrt(1-x));
}

六、总结

做完这个项目,我最大的感受是:AI 让地图从「工具」进化为能思考、会对话的「大脑」。当用户输入"帮 4 个人找汇合点"时,腾讯地图 JavaScript API GL 不再只是被动渲染坐标,而是通过 MCP Tool Calling 主动理解需求、调用 geocoder 解析地址、用 matrix 计算距离矩阵、最后驱动 MultiMarker 和 MultiPolyline 在地图上绘制出最优方案。这种从"你点什么它显示什么"到"你说需求它给方案"的转变,才是 AI Native 地图应用该有的样子。

技术实现上,我深度结合了腾讯位置服务 Map Skills 体系下的多个工具:tencentmap-jsapi-gl-skill负责 3D 地图渲染和高性能图层管理,tencentmap-webservice-skill提供 POI 搜索、路线规划、逆地理编码等能力,而MCP Server则作为 AI Agent 与这些工具通信的标准协议。当 AI 接收到用户需求后,它会像人类一样思考——先解析意图(汇合/搜索/导航),再决定调用哪些工具(geocoder/placeSearchNearby/direction),最后综合结果生成结构化行程单。这种"感知→思考→行动"的闭环,让地图真正拥有了"大脑"。

如果你也在探索 AI+ 地图的可能性,我的建议是:别把 MCP 当噱头,要让它真正解决用户的焦虑。我的这款旅行地图智能体应用解决了行程规划问题,之所以打动人,不是因为调用了多少高大上的 API,而是它像一个真正的旅行管家那样思考——考虑时间节奏、控制预算分配、甚至预判体力消耗。技术的终极价值,永远在于它能给多少人带来便利和温暖。

AI+ 地图的智能进化之路,才刚刚开始。

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐