我希望用户选择一个Map应用程序(谷歌Map或Waze),然后点击一个 * 开始导航 * 按钮,打开选定的应用程序与预先选定的目的地坐标(纬度和经度)。
我一直在使用 url_launcher 来实现这一点。当点击按钮时,url会打开应用程序的浏览器版本(正确),并提示“在应用程序中继续”。当我点击“在应用程序中继续”时,它会中断,并给出以下错误消息:net::ERR_UNKNOWN_URL_SCHEME。这发生在Google Maps和Waze上。
下面是按下 start navigating 按钮时调用的代码:
void launchMaps(double latitude, double longitude) {
if (getSelectedMap() == "waze" && Platform.isAndroid) {
launchUrl(Uri.parse(
'https://waze.com/ul?ll= $latitude,$longitude&navigate=yes?utm_source=com.posttag'));
} else if (getSelectedMap() == "google" && Platform.isAndroid) {
launchUrl(Uri.parse(
'https://maps.google.com?saddr=My+Location&daddr=$latitude,$longitude'));
}
感谢您的任何帮助!
1条答案
按热度按时间yeotifhr1#
如何a)检查Flutter中的设备上是否安装了Map应用程序(Google,Apple,Waze),以及B)如何打开此应用程序开始导航到预选坐标:检查是否安装了Map应用程序:下面的代码检查设备上是否安装了Map。将www.example.com更改为MapType.appleMapType.google或MapType.waze用于其他Map应用程序。
记住notifyListener();在设置任何await变量后。打开Map应用程序开始导航:下面的代码检查在设备上启动Map应用程序。将www.example.com更改为MapType.appleMapType.google或MapType.waze用于其他Map应用程序。
对于Google Maps,可能需要替换特殊字符,例如:
Waze不允许使用destinationTitle --这在其他Map应用中显示为位置的标题而不是坐标。下面的代码不会立即启动导航;相反,它只是简单地显示一个目标标记,您可以手动启动应用内导航。
这一切都是用maps_launcher包完成的!