google-navigation-flutter自定义起点导航失效问题咨询
我使用google-navigation-flutter开发应用,该插件支持路线规划与导航功能。我想要实现从自定义起点到目的地的路线导航,而不是默认从当前位置出发。
我修改了官方示例中的代码,尝试通过Routes API获取routeToken并传入RouteTokenOptions来指定起点,但导航始终还是从当前位置开始。
我的代码如下:
Future<Destinations?> _buildDestinationsWithRoutesApi() async { assert(_routeTokensEnabled); showMessage('Using route token from Routes API.'); List<String> routeTokens = <String>[]; try { routeTokens = await getRouteToken( <NavigationWaypoint>[ // Add users location as start location for getting routetoken. NavigationWaypoint.withLatLngTarget( title: 'Origin', target: LatLng(latitude: 24.2181, longitude: 120.7131)), // 修改此处指定自定义起点 // title: 'Origin', target: _userLocation), ..._waypoints, ], ); } catch (e) { showMessage('Failed to get route tokens from Routes API. $e'); return null; } if (routeTokens.isEmpty) { showMessage('Failed to get route tokens from Routes API.'); return null; } else if (routeTokens.length > 1) { showMessage( 'More than one route token received from Routes API. Using the first one.'); } return Destinations( waypoints: _waypoints, displayOptions: NavigationDisplayOptions(showDestinationMarkers: false,), routeTokenOptions: RouteTokenOptions( routeToken: routeTokens.first, // Uses first fetched route token. travelMode: _travelMode, )); }
我在模拟器中设置了与自定义起点不同的当前位置,但导航结果仍然显示从当前位置出发的路线。请问这种实现自定义起点的方式是否正确?还是我哪里操作有误?


问题原因与解决方法
你当前的实现存在关键遗漏:虽然通过Routes API获取了自定义起点的routeToken,但返回Destinations对象时,没有将自定义起点加入到waypoints列表中,同时需要禁用导航默认的“自动重新定位到当前位置”行为。
修正步骤:
将自定义起点添加到waypoints列表
返回Destinations时,必须把自定义起点作为第一个节点传入waypoints,不能只传目的地的_waypoints:return Destinations( waypoints: [ NavigationWaypoint.withLatLngTarget( title: 'Origin', target: LatLng(latitude: 24.2181, longitude: 120.7131)), ..._waypoints, ], displayOptions: NavigationDisplayOptions(showDestinationMarkers: false,), routeTokenOptions: RouteTokenOptions( routeToken: routeTokens.first, travelMode: _travelMode, ));禁用自动重新定位
启动导航时,添加配置禁用自动跟随当前位置的功能:await GoogleNavigation.launchNavigation( destinations, navigationOptions: NavigationOptions( disableAutoRelocation: true, ), );验证RouteToken生成逻辑
可以打印routeToken对应的路线信息,确认生成的routeToken确实使用了自定义起点,避免API调用时的参数错误。
额外注意事项:
- 确认模拟器的位置模拟已生效,且应用定位权限设置未覆盖模拟位置。
- 检查插件版本,部分旧版本存在routeToken优先级低于当前位置的bug,建议升级到最新稳定版。
内容的提问来源于stack exchange,提问作者LiChen Lee
相关产品推荐
相关产品推荐

