作者: 爱上纯净的蓝天
发布时间: 最新推荐文章于 2026-05-18 20:18:26 发布
来源: https://blog.csdn.net/weixin_48384182/article/details/159687130
现在的地图App基本都能导航、搜地点,但交互方式还是老一套:点按钮、输关键词、手动规划路线。 很多用户尤其是出行、旅游场景,其实更想用一句话说清需求,比如“帮我安排南京一天的游玩路线”“我在雨润大街,附近有什么好吃的火锅店”,而不是一步步点操作。
基于这个真实需求,我们做了一套AI+腾讯地图的智能交互方案,让地图从“被动工具”变成能听懂人话、主动给出方案的智能助手。
整个系统很轻量,前后端直接联动:
先完成基础地图加载,默认定位并展示常用控件:
function initMap() {
map = new qq.maps.Map(document.getElementById('map'), {
center: new qq.maps.LatLng(39.916527, 116.397128),
zoom: 13
});
map.addControl(new qq.maps.ScaleControl());
map.addControl(new qq.maps.ZoomControl());
}
用户输入五花八门,系统先通过关键词做意图分流,再进入对应逻辑:
function processQuery(query) {
if (query.includes('附近') || query.includes('周边')) {
handleNearbySearch(query);
} else if (query.includes('去') || query.includes('到') || query.includes('路线')) {
handleRoutePlan(query);
} else if (query.includes('行程') || query.includes('规划')) {
handleItineraryPlan(query);
} else {
addMessage('bot', '你可以问我周边美食、路线规划或一日游行程~');
}
}
根据用户当前位置,检索对应类型的POI(餐厅、景点、酒店),并在地图打点展示:
function searchPOI(keyword, location, radius, callback) {
const search = new qq.maps.SearchService({
complete: (res) => {
callback(res?.detail?.pois || []);
}
});
search.search({
keyword: keyword,
location: new qq.maps.LatLng(location.lat, location.lng),
radius: radius
});
}
解析起点终点,调用路线接口,返回距离、耗时并在地图绘制路线:
function calculateRoute(from, to, callback) {
const direction = new qq.maps.DirectionService();
direction.request({
from: new qq.maps.LatLng(from.lat, from.lng),
to: new qq.maps.LatLng(to.lat, to.lng),
mode: qq.maps.DirectionMode.DRIVING,
complete: (res) => {
const route = res?.detail?.routes[0];
if (route) {
callback({ path: route.path, distance: route.distance, duration: route.duration });
} else {
callback(null);
}
}
});
}
很多人表达不标准,比如“我饿了”“哪里好玩”。 早期只靠关键词命中率低,后来增加了同义词库+常用句式匹配,理解准确率明显提升。
并发检索时容易卡顿。 优化方式:减少重复请求、异步加载、先展示结果再逐步打点,保证流畅度。
多路线叠加时用户看不清。 解决:每次规划前清除旧路线,只保留当前一条主路线,并标注耗时和距离。
这个项目的核心,是把AI自然语言能力和地图服务做了一次轻量化融合。 不再是传统地图的“点选操作”,而是让用户用最自然的方式和地图对话,真正做到“一句话搞定出行”。
未来可以继续在意图理解、个性化推荐上深耕,让智能出行更简单、更贴近普通人的真实使用习惯。