打开Goog​​le Maps应用并在Flutter Webview中显示逐行导航

时间:2019-08-20 11:45:21

标签: android google-maps android-intent flutter webview

我想在Flutter应用程序内部显示具有逐步导航功能的Google Maps应用程序。

我正在开发一种Flutter应用程序,该应用程序可以安排路线,在后台监控驾驶员的进度,并能够根据用户输入(例如路障)重新安排路线。我想在底部显示一个应用栏,其中包含有关进度的信息以及一些用于启动或通知包版广告的按钮。在此栏上方,我希望有一个窗口显示基于时间表的当前部分的逐步导航。我希望所有这些都能自动运行,以将用户输入的数量减少到最低限度(因为用户正在开车)。


Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Flutter demo'),
      ),
      body: Center(
        child: WebView(
          initialUrl: 'https://www.google.com/maps/dir/?api=1&destination=Madrid,Spain&origin=Barcelona,Spain&waypoints=Zaragoza|Huesca&travelmode=driving&dir_action=navigate',
          javascriptMode: JavascriptMode.unrestricted,
        ),
      ),
      bottomNavigationBar: BottomAppBar(
        color: Colors.blueGrey,
        child: Text('Dashboard'),
      ),
    );
  }

我可以使用以下示例网址设置WebView:

https://www.google.com/maps/dir/?api=1&destination=Madrid,Spain&origin=Barcelona,Spain&waypoints=Zaragoza|Huesca&travelmode=driving&dir_action=navigate

它显示带有所需路线和“导航”按钮的Google Maps网络应用。但是,当我按下导航按钮时,由于要触发意图而删除了net:ERR_UNKNOWN_URL_SCHEME。我有一种感觉,即使我能够解决此错误,我也只能在新的屏幕/页面上打开逐行导航,而不能嵌入到WebView(或我应用程序的其他位置)中)。

这甚至有可能还是我在浪费时间试图找到一种方法来完成这项工作?

1 个答案:

答案 0 :(得分:0)

我认为不可能在 WebView 中强制进行逐向 Google 地图导航。此外,在您的应用中使用 Google Maps API 创建您自己的精细导航也可能违反 Google Maps Platform's Terms of Service - 请参阅 3.2.3.d:“禁止重新创建 Google 产品或功能”。

我可以建议的是让其他应用程序处理正在广播的意图,以启动外部地图应用程序来处理导航。您可以查看此 post 以了解如何过滤 Intent URL 并让它们在外部进行处理。