Bing Maps API Web Control v8:如何识别选中的路线?
关于Bing Maps API v8 DirectionsManager判断选中路线的方案
嘿,这个问题我之前做项目时刚好碰到过,给你整理两个靠谱的方法:
1. 监听路线选中切换事件
Bing Maps v8的DirectionsManager内置了selectedRouteIndexChanged事件,当用户点击路线列表里的不同路线、或者在地图上切换路线时,这个事件会自动触发。你可以通过绑定这个事件来实时获取选中的路线信息:
// 假设你已经完成了map和directionsManager的初始化 directionsManager.addListener('selectedRouteIndexChanged', function(eventArgs) { const selectedIndex = eventArgs.selectedRouteIndex; // 先判断是否有选中的路线(没有路线时索引为-1) if (selectedIndex !== -1) { // 根据索引获取选中的路线对象 const selectedRoute = directionsManager.getRoute(selectedIndex); // 这里可以获取路线的详细信息,比如总距离、预计耗时 const routeSummary = selectedRoute.routeSummary; console.log(`选中的路线距离:${routeSummary.distance} ${routeSummary.distanceUnit}`); console.log(`预计行驶时间:${routeSummary.timeWithTraffic} 秒`); // 也可以做其他自定义逻辑,比如高亮路线、更新侧边栏信息等 } });
2. 主动获取当前选中的路线
如果你不需要实时监听,只是想在某个特定时机(比如用户点击按钮时)获取当前选中的路线,可以直接调用directionsManager.getSelectedRouteIndex()方法拿到选中路线的索引,再通过索引获取路线对象:
// 获取当前选中的路线索引 const currentSelectedIndex = directionsManager.getSelectedRouteIndex(); if (currentSelectedIndex !== -1) { const currentRoute = directionsManager.getRoute(currentSelectedIndex); // 执行你的业务逻辑 }
需要注意的是,当还没有生成任何路线、或者所有路线都被清除时,getSelectedRouteIndex()会返回-1,所以一定要做这个判断,避免报错。
内容的提问来源于stack exchange,提问作者Michael Witt
相关产品推荐
相关产品推荐

