打开谷歌地图应用并在flutter webview中显示逐向导航
Posted
技术标签:
【中文标题】打开谷歌地图应用并在flutter webview中显示逐向导航【英文标题】:Open Google Maps app and display turn-by-turn navigation inside flutter webview 【发布时间】:2019-12-25 15:05:36 【问题描述】:我想在我的 Flutter 应用中显示带有逐步导航的 Google 地图应用。
我正在开发一个 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'),
),
);
我能够使用此示例 url 设置 WebView:
https://www.google.com/maps/dir/?api=1&destination=Madrid,Spain&origin=Barcelona,Spain&waypoints=Zaragoza|Huesca&travelmode=driving&dir_action=navigate
它会显示带有所需路线和“导航”按钮的 Google 地图网络应用程序。但是,当我按下导航按钮时,一个 net:ERR_UNKNOWN_URL_SCHEME 被丢弃,因为它想要触发一个意图。我有一种感觉,即使我能够解决这个错误,我也只能在新屏幕/页面上打开逐向导航,而不是嵌入到 WebView 中(或我的应用程序中的其他位置) )。
这有可能吗,还是我在浪费时间试图找到一种方法来完成这项工作?
【问题讨论】:
目前,我们已经开始使用 Sygic(基于 HERE 地图)。 Google 有一个 Navigation SDK,但它不会很快发布。 Waze 和 Uber 正在使用它。 您找到解决方案了吗?我陷入了类似的情况 嗨萨尔塔克!这个问题有两个方面:1)移动设备上的轮流和 2)应用程序中的应用程序(可能使用 Webview)。目前,我们仍在为这个项目努力工作,并从 Flutter 转向纯 Java android。我们无法在应用程序中获取应用程序,也无法从 Google 获得逐步导航。 Sygic 不符合我们的业务要求(即使他们在其他方面做广告,所以要小心!)所以我们探索了 MapBox 和 BeNav 等其他供应商。现在我们的应用会触发打开另一个导航应用的意图,开始导航预先计算的路线。 【参考方案1】:我认为不可能在 WebView 中强制进行逐向 Google 地图导航。此外,在您的应用中使用 Google Maps API 创建您自己的逐向导航也可能违反Google Maps Platform's Terms of Service - 请参阅 3.2.3.d:“不得重新创建 Google 产品或功能”。
我可以建议让其他应用程序处理广播的意图,以启动外部地图应用程序来处理导航。您可以查看post,了解如何过滤意图 URL 并让它们在外部处理。
【讨论】:
以上是关于打开谷歌地图应用并在flutter webview中显示逐向导航的主要内容,如果未能解决你的问题,请参考以下文章
Flutter:当我的应用不在前台时如何显示横幅(如地图/谷歌地图)?
如何保存多个谷歌地图标记,它们在 Firebase 实时数据库中的位置,并在打开应用程序时再次显示它们
谷歌地图使用 google_maps_flutter 插件显示空白地图