You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

google-navigation-flutter自定义起点导航失效问题咨询

自定义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列表中,同时需要禁用导航默认的“自动重新定位到当前位置”行为。

修正步骤:

  1. 将自定义起点添加到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,
        ));
    
  2. 禁用自动重新定位
    启动导航时,添加配置禁用自动跟随当前位置的功能:

    await GoogleNavigation.launchNavigation(
      destinations,
      navigationOptions: NavigationOptions(
        disableAutoRelocation: true,
      ),
    );
    
  3. 验证RouteToken生成逻辑
    可以打印routeToken对应的路线信息,确认生成的routeToken确实使用了自定义起点,避免API调用时的参数错误。

额外注意事项:

  • 确认模拟器的位置模拟已生效,且应用定位权限设置未覆盖模拟位置。
  • 检查插件版本,部分旧版本存在routeToken优先级低于当前位置的bug,建议升级到最新稳定版。

内容的提问来源于stack exchange,提问作者LiChen Lee

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.15 19:28:12