同行:把"去哪儿玩"从一场争吵,变成一张地图
多人协作行程规划工具 · 单文件网页应用 · 无需安装、无需注册
一、出发前的两道难题
计划一次结伴旅行,往往卡在出发之前。
第一道难题:陌生城市 + 一堆收藏 = 灾难路线。
第一次去一座城市,你收藏了十几篇攻略、几十个景点截图。真排起来才发现:上午在城东、中午跑到城西、下午又折回城东——一天有大半天耗在打车和堵车上,还错过了想看的日落。
第二道难题:人越多,意见越难统一。
你想看博物馆,朋友只想逛老街,家人坚持去公园;讨论三个小时没有结论,"随便"说了八遍,最后不欢而散——谁都不满意,还伤了感情。
同行 就是来解决这两件事的:让路线"自动顺路",让分歧"有据可依"。
二、它是什么
「同行」是一个打开浏览器就能用的多人行程规划页面:
- 朋友把各自想去的地方丢进同一份行程;
- 每个人对每个地点投票(
必去 /
想去 /
随意 /
不去); - 系统按地理位置自动聚类,把相近的地点分到同一天;
- 为每天生成从酒店出发的最优游览动线,并在地图上标注每一段的步行 / 地铁 / 打车时长;
- 自动算出兼顾多数人意愿的折中路线,并展示每个人的"心愿达成度";
- 最后一键导出成可分享的日程表。
没有账号,没有后端,没有"注册后查看"。复制一个链接,朋友打开就能一起投票。
三、从一堆收藏到一份行程,只要五步
第 1 步:把想去的地方"丢"进来
在左侧输入地点名称,选择类型(景点 / 博物馆 / 公园 / 美食 / 购物 / 体验)和预计停留时长,然后在地图上点一下它的位置——就这么简单。谁添加的,就默认替谁投上一票"想去"。
第 2 步:投票,而不是吵架
每个地点下方有四个投票按钮。点击左上角的成员头像切换身份,就能模拟"多人各自投票";真实多人场景下,大家各自打开链接、各自投自己的。
地点按总分排序,必去票权重高于普通想去,不想去是负分。全票通过的地点会有"全票"徽章,有人爱有人嫌的地点会亮起
分歧标记——分歧不是被藏起来,而是被明明白白摆出来。
第 3 步:自动聚类,天生顺路
系统用 K-Means 聚类算法(最远点采样初始化 + 簇大小平衡)把入选地点按地理位置分成 N 组——N 就是你要玩的天数。地理上相近的地点自然落在同一天,从源头杜绝"东西奔波"。
第 4 步:每日最优动线
每一天的游览顺序由 最近邻构造 + 2-opt 优化自动计算:从酒店出发,走一条尽量短、不回头的路线。地图书上:
- 实线是坐车,虚线是步行;
- 每段路中间有交通标签(如"
地铁 · 17 分"),点一下就能切换 步行 / 地铁 / 打车,时长和公里数实时重算; - 地点按当天顺序标号,Day 1、Day 2、Day 3 各用一种颜色。
右栏是逐站的时间线日程:几点出发、几点到、停多久、几点走,一目了然。
第 5 步:导出,出发
点击右上角「
导出日程表」,系统会把整个行程整理成一份结构清晰的 Markdown 文档——按天分组、含每站的到达/离开时间和交通方式、附候补清单和分歧折中说明——同时复制到剪贴板并下载为文件,可以直接发到群里、打印随身带。
四、折中路线:让少数人也服气
这是「同行」最核心的设计:分歧不靠嗓门大解决,靠规则解决。
- 每个有争议的地点都会计算总分(想去为正、不去为负),多数人想去的保留并安排在顺路位置,多数人不去的移入候补——少数服从多数,但每个决定都写明理由:「某某、某某想去,某某不想去 → 已保留」。
- 右上角的「心愿达成度」面板为每位成员显示一条进度条:TA 想去的地方,最终成行了几分之几。谁被"折中"掉了多少,看得清清楚楚——被牺牲的人心里有数,做决定的人才好意思。
- 还提供两种策略一键切换:顺路优先(动线最短)或 意愿优先(高分景点排前面),鱼和熊掌你自己挑。
五、怎么用起来
方式一(推荐,可多人协作):
在项目目录下启动自带的小服务器:
powershell -ExecutionPolicy Bypass -File .\serve.ps1
然后:
- 自己的电脑打开:
http://127.0.0.1:18888/ - 同一 Wi-Fi 下的手机 / 朋友的电脑打开:
http://你的局域网IP:18888/
方式二(单人使用): 直接双击 index.html 用浏览器打开即可(需联网加载界面库)。
页面里点「
复制分享链接」,整份行程(成员、地点、所有投票)会被编码进链接本身——对方打开链接,看到的就是和你完全一致的行程,接着投自己的票就行。所有改动自动存在浏览器本地,随时可「↺ 重置示例」重新开始。
六、技术小记(给感兴趣的读者)
- 零依赖部署:单个 HTML 文件,Vue 3 通过 CDN 加载,其余全部原生实现;
- 聚类:K-Means,采用最远点采样初始化避免局部最优,并做簇大小平衡防止某一天塞爆;
- 动线优化:最近邻贪心构造初始解,2-opt 局部搜索改进,保证当天路线尽量短;
- 交通估算:按距离自动推荐方式(<1.2km 步行、<5km 地铁、更长打车),耗时 = 距离 × 单位耗时 + 固定开销(等车、进出站),并允许手动切换;
- 数据即链接:行程数据 Base64 编码进 URL hash,无需后端数据库即可"分享一份行程"。
七、写在最后
旅行计划本该是出发前最快乐的部分。
「同行」不能替你决定想看什么,但它能保证:每个人的心愿都被看见、被计算,最终的路线顺路、透明、有据可依。 当"听谁的"变成"看数据",路上剩下的就只有风景和笑声了。
—— 打开浏览器,把链接丢进群里,开始你们的第一次协作旅行吧。
