Flutter url_launcher高德导航集成

在Flutter项目中集成url_launcher调用高德地图导航时遇到问题:按照官方文档配置了amapuri协议和URL Scheme,但点击链接后高德地图APP偶尔无法正常唤起,部分机型直接跳转到高德官网。测试发现iOS成功率高于Android,尤其华为设备基本失效。已尝试以下方案均未彻底解决:

  1. 使用https://uri.amap.com替代amapuri://
  2. 添加android:autoVerify="true"的intent-filter。

想请教:

  1. 不同机型兼容性是否与URI编码有关?
  2. 是否需要针对国内厂商ROM做特殊适配?
  3. 有没有更稳定的兜底方案(如Web版导航)?

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

3 回复

要使用 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 String url = "androidamap://navi?sourceApplication=your_app&poiname=fstart,fend&lat=$endLat&lon=$endLng&dev=0";
  if (await canLaunch(url)) {
    await launch(url);
  } else {
    throw '无法打开高德导航';
  }
}

注意:此方法适用于安卓。iOS 用户需切换到苹果自带地图或百度地图。此外,需要在 AndroidManifest.xml 中添加高德相关权限和功能。

这是一个简单示例,实际使用时请根据需求调整参数,并处理异常情况。同时,建议阅读高德开放平台的官方文档以获取更多细节和注意事项。

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


在Flutter中使用url_launcher插件结合高德地图实现导航功能,步骤如下:

  1. 安装依赖
    pubspec.yaml中添加url_launcher

    dependencies:
      url_launcher: ^6.0.3
    
  2. 配置高德API Key
    前往高德开放平台申请web服务API key,并在Android的AndroidManifest.xml和iOS的Info.plist中配置。

  3. 编写导航代码
    使用url_launcher调起高德导航:

    import 'package:url_launcher/url_launcher.dart';
    
    Future<void> launchAmapNavigation(double latitude, double longitude) async {
      final String aMapUrl = "amapuri://route/plan/?dlat=$latitude&dlon=$longitude";
      if (await canLaunch(aMapUrl)) {
        await launch(aMapUrl);
      } else {
        throw '无法打开高德导航';
      }
    }
    
    // 调用示例
    launchAmapNavigation(39.909604, 116.397228); // 北京坐标
    
  4. 注意事项

    • 确保设备已安装高德地图App。
    • 高德URL Scheme可能需要额外配置,具体参考高德官方文档。
    • Android需动态权限管理(如访问位置)。

这样就可以在Flutter中通过高德地图实现导航功能了。

在Flutter中使用url_launcher集成高德地图导航非常简单,主要分为以下几个步骤:

  1. 添加依赖 在pubspec.yaml中添加url_launcher依赖:
dependencies:
  url_launcher: ^6.1.0
  1. 基本导航实现
import 'package:url_launcher/url_launcher.dart';

// 唤起高德地图导航
void launchAMap(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 '无法打开地图';
    }
  }
}
  1. 功能说明
  • dlat: 目标纬度
  • dlon: 目标经度
  • dname: 目标地址名称
  • dev: 是否偏移(0不偏移,1偏移)
  • t: 导航类型(0驾车,1公交,2步行,3骑行)
  1. 注意事项
  • 需要在AndroidManifest.xml和Info.plist中配置URL Scheme白名单
  • 测试前请确保设备已安装高德地图APP
  • 经纬度建议使用高德坐标系(GCJ-02)

这样就能在Flutter应用中轻松唤起高德地图进行导航了!

回到顶部