Flutter教程url_launcher调用高德地图导航

在Flutter中使用url_launcher调用高德地图导航时遇到问题,具体代码如下:

final url = 'androidamap://navi?sourceApplication=appname&poiname=目标地点&lat=36.5&lon=116.4&dev=0&style=2';  
await launchUrl(Uri.parse(url));  

在Android设备上测试时,高德地图无法正常启动,提示"未安装高德地图"(但已确认设备已安装最新版高德地图)。
已尝试以下方法:

  1. 在AndroidManifest.xml中添加了高德地图的查询权限
  2. 测试了其他Scheme(如https://uri.amap.com)依然无效
  3. 确认url_launcher版本为6.1.7

请问可能是什么原因导致?是否需要特殊配置或检查设备权限?


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

3 回复

在Flutter中使用url_launcher插件调用高德地图导航,首先需要确保已安装url_launcher。然后可以通过以下代码实现:

import 'package:url_launcher/url_launcher.dart';

void launchAMapNavigation(double latitude, double longitude) async {
  final String url = 'amap://navi?sourceApplication=yourAppName&poiname=fzlll&lat=$latitude&lon=$longitude&dev=0';
  if (await canLaunch(url)) {
    await launch(url);
  } else {
    throw '无法打开高德地图: $url';
  }
}

说明:

  1. 替换yourAppName为你应用的名称。
  2. latitudelongitude为目标地点的经纬度。
  3. 需要在AndroidManifest.xml添加权限:
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
    
  4. iOS需在Info.plist中添加URL类型。

此方法通过构建高德地图的URL Scheme实现导航功能。

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


在 Flutter 中使用 url_launcher 插件可以轻松调用高德地图进行导航。首先确保已添加依赖:

dependencies:
  url_launcher: ^6.0.9

然后实现代码如下:

import 'package:flutter/material.dart';
import 'package:url_launcher/url_launcher.dart';

void launchAmapNavigation(double latitude, double longitude) async {
  final String aMapUrl = 'amap://navi?lat=$latitude&lon=$longitude&sourceApplication=appName';
  if (await canLaunch(aMapUrl)) {
    await launch(aMapUrl);
  } else {
    throw '无法打开高德地图: $aMapUrl';
  }
}

void main() {
  runApp(MaterialApp(
    home: Scaffold(
      appBar: AppBar(title: Text('高德地图导航示例')),
      body: Center(
        child: ElevatedButton(
          onPressed: () => launchAmapNavigation(39.909604, 116.397228),
          child: Text('开始导航'),
        ),
      ),
    ),
  ));
}

这段代码会启动高德地图并设置起点为当前定位(需要获取),终点为北京天安门的经纬度。请根据需求替换经纬度参数。

在Flutter中使用url_launcher插件调用高德地图导航很简单。以下是实现步骤:

  1. 首先添加依赖到pubspec.yaml
dependencies:
  url_launcher: ^6.1.11
  1. 实现导航代码:
import 'package:flutter/material.dart';
import 'package:url_launcher/url_launcher.dart';

void launchAmapNavigation(double lat, double lng, String address) async {
  final uri = Uri.parse(
    'androidamap://navi?sourceApplication=appname&lat=$lat&lon=$lng&dev=0&style=2'
  );
  
  try {
    if (await canLaunchUrl(uri)) {
      await launchUrl(uri);
    } else {
      // 如果没有安装高德地图,可以跳转到网页版或应用商店
      await launchUrl(
        Uri.parse('https://uri.amap.com/marker?position=$lng,$lat&name=$address')
      );
    }
  } catch (e) {
    print('导航失败: $e');
  }
}

// 调用示例
ElevatedButton(
  onPressed: () => launchAmapNavigation(39.90960, 116.47740, "北京市"),
  child: Text('导航到北京市'),
)

注意事项:

  1. 需要添加Android权限(AndroidManifest.xml):
<uses-permission android:name="android.permission.INTERNET"/>
  1. iOS需要在Info.plist中添加:
<key>LSApplicationQueriesSchemes</key>
<array>
  <string>iosamap</string>
</array>
  1. 参数说明:
  • lat: 目标纬度
  • lng: 目标经度
  • address: 地址名称(可选)
  • dev: 是否偏移(0表示不偏移)
  • style: 导航类型(2为路径规划)

如果没有安装高德地图,代码会自动跳转到网页版高德地图。

回到顶部