Flutter教程url_launcher调用高德导航

在Flutter中使用url_launcher插件调用高德地图导航时遇到问题。按照教程配置了AndroidManifest.xml并添加了高德地图的URL Scheme,但点击按钮后无法跳转。错误提示为“No Activity found to handle Intent”。已确认手机安装了高德地图APP,测试URL在浏览器中可以正常打开。请问是否需要额外配置?代码片段如下:

final url = 'amapuri://route/plan/?sid=BGVIS1&slat=39.92848272&slon=116.39560823&sname=A&did=BGVIS2&dlat=39.98848272&dlon=116.47560823&dname=B&dev=0&t=0';
if (await canLaunch(url)) {
  await launch(url);
} else {
  throw 'Could not launch $url';
}

更多关于Flutter教程url_launcher调用高德导航的实战教程也可以访问 https://www.itying.com/category-92-b0.html

3 回复

在Flutter中使用url_launcher插件调用高德导航,可以按以下步骤操作:

  1. 添加依赖:在pubspec.yaml文件中添加url_launcher
dependencies:
  url_launcher: ^6.0.9
  1. 导入并初始化:
import 'package:url_launcher/url_launcher.dart';

void _launchAmap() async {
  const String mapUrl = "amapuri://route/plan/";
  final String location = "116.481424,39.989641"; // 目标地点经纬度
  if (await canLaunch(mapUrl + location)) {
    await launch(mapUrl + location);
  } else {
    throw '无法打开高德导航';
  }
}

注意:高德地图的URL scheme为amapuri://。如果需要指定起点和终点,可以在URL后添加spos(起点)和dpos(终点)参数,格式为经度,维度。确保用户已安装高德地图APP。

更多关于Flutter教程url_launcher调用高德导航的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


在 Flutter 中使用 url_launcher 插件可以方便地调用高德导航。首先确保已安装 url_launcher,然后使用以下代码:

import 'package:url_launcher/url_launcher.dart';

Future<void> launchAmapNavigation(String startLat, String startLng, String endLat, String endLng) async {
  final Uri googleMapUri = Uri.parse(
    "androidamap://navi?sourceApplication=yourAppName&poiname=start&lat=$startLat&lon=$startLng&dev=0",
  );
  
  if (!await launchUrl(googleMapUri)) {
    throw Exception('Could not launch $googleMapUri');
  }
}

此代码将启动高德地图并开始导航。请记得将 yourAppName 替换为你的应用名称,并确保设备上已安装高德地图。如果未安装,则需要处理跳转失败的情况。

另外,还需在 AndroidManifest.xml 文件中添加高德地图的相关权限和功能:

<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<queries>
  <intent>
    <action android:name="android.intent.action.VIEW" />
    <data android:scheme="androidamap" />
  </intent>
</queries>

在 Flutter 中使用 url_launcher 调用高德地图导航的代码示例如下:

  1. 首先在 pubspec.yaml 添加依赖:
dependencies:
  url_launcher: ^6.1.5
  1. 调用高德地图导航的代码:
import 'package:url_launcher/url_launcher.dart';

void launchAmapNavigation(double lat, double lng, String address) async {
  final url = 'amapuri://route/plan/?dlat=$lat&dlon=$lng&dname=$address&dev=0&t=0';
  
  if (await canLaunch(url)) {
    await launch(url);
  } else {
    // 如果手机没安装高德地图,跳转到网页版高德地图
    final webUrl = 'https://uri.amap.com/navigation?to=$lng,$lat,$address';
    if (await canLaunch(webUrl)) {
      await launch(webUrl);
    } else {
      throw '无法打开高德地图';
    }
  }
}

使用示例:

launchAmapNavigation(39.90872, 116.39751, "天安门");

注意事项:

  1. 需要先在手机上安装高德地图APP
  2. 参数说明:
    • dlat: 目的地纬度
    • dlon: 目的地经度
    • dname: 目的地名称
    • dev: 是否偏移(0代表不偏移)
    • t: 导航类型(0驾车/1公交/2步行)

如需更详细的参数设置,可以参考高德地图的URI API文档。

回到顶部