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设备上测试时,高德地图无法正常启动,提示"未安装高德地图"(但已确认设备已安装最新版高德地图)。
已尝试以下方法:
- 在AndroidManifest.xml中添加了高德地图的查询权限
- 测试了其他Scheme(如
https://uri.amap.com
)依然无效 - 确认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';
}
}
说明:
- 替换
yourAppName
为你应用的名称。 latitude
和longitude
为目标地点的经纬度。- 需要在
AndroidManifest.xml
添加权限:<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
- 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
插件调用高德地图导航很简单。以下是实现步骤:
- 首先添加依赖到
pubspec.yaml
:
dependencies:
url_launcher: ^6.1.11
- 实现导航代码:
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('导航到北京市'),
)
注意事项:
- 需要添加Android权限(AndroidManifest.xml):
<uses-permission android:name="android.permission.INTERNET"/>
- iOS需要在Info.plist中添加:
<key>LSApplicationQueriesSchemes</key>
<array>
<string>iosamap</string>
</array>
- 参数说明:
lat
: 目标纬度lng
: 目标经度address
: 地址名称(可选)dev
: 是否偏移(0表示不偏移)style
: 导航类型(2为路径规划)
如果没有安装高德地图,代码会自动跳转到网页版高德地图。