作者:霸气的饭桶丶_130 | 来源:互联网 | 2023-07-16 14:04
篇首语:本文由编程笔记#小编为大家整理,主要介绍了Flutter 调用高德地图APP实现位置搜索路线规划逆地理编码相关的知识,希望对你有一定的参考价值。
1 开发准备
pubspec.yaml 配置文件中添加插件
dependencies:
flutter:
sdk: flutter
url_launcher: ^6.1.2
ios 配置 info.plist
<key>LSApplicationQueriesSchemes</key>
<array>
<string>iosamap</string>
<string>baidumap</string>
</array>
2 Flutter 调起高德地图 - 搜索位置 逆地理编码
高德地图开发文档
static Future<bool> openAmap(
double longitude,
double latitude,
String? address,
String? title,
bool showErr &#61; true,
) async
String url &#61;
&#39;$Platform.isandroid ? &#39;android&#39; : &#39;ios&#39;amap://viewReGeo?sourceApplication&#61;$title??""&lat&#61;$latitude&lon&#61;$longitude&dev&#61;0&#39;;
if (Platform.isIOS) url &#61; Uri.encodeFull(url);
try
if (await canLaunchUrlString(url))
await launchUrlString(url);
return true;
else
if (showErr) showToastCommon(&#39;无法调起高德地图&#39;);
return false;
on Exception catch (e)
if (showErr) showToastCommon(&#39;无法调起高德地图&#39;);
return false;
实际上是调用的高德地图开放api 反向地址解析
调起的结果如下 &#xff1a;
3 坐标类型选择
需要注意的是 dev 坐标类型的取值
- 0 使用经纬度是已经加密后的,不需要国测加密;
- 1 使用经纬度是未加密的,需要国测加密;
如果不传递正确的坐标类型参数&#xff0c;会导致地点坐标位置偏移。默认为bd09经纬度坐标。
4 Flutter 调起高德地图 - 导航 路线规划
高德地图开发文档
static Future<bool> openAmapNav(
double longitude,
double latitude,
String? address,
bool showErr &#61; true,
) async
String url &#61;
&#39;$Platform.isAndroid ? &#39;android&#39; : &#39;ios&#39;amap://navi?sourceApplication&#61;amap&lat&#61;$latitude&lon&#61;$longitude&dev&#61;0&style&#61;2&poiname&#61;$address ?? &#39;&#39;&#39;;
if (Platform.isIOS) url &#61; Uri.encodeFull(url);
try
if (await canLaunchUrlString(url))
await launchUrlString(url);
return true;
else
if (showErr) showToastCommon(&#39;无法调起高德地图&#39;);
return false;
on Exception catch (e)
if (showErr) showToastCommon(&#39;无法调起高德地图&#39;);
return false;
实际上是调用的
5 提示框使用的是 GetX 框架
static showToastCommon(String message)
Get.defaultDialog(
title: "提示",
middleText: message,
backgroundColor: Colors.white,
titleStyle: const TextStyle(color: Colors.black),
middleTextStyle: const TextStyle(color: Colors.red),
textConfirm: "知道了",
confirmTextColor: Colors.white,
onConfirm: ()
Get.back();
,
radius: 8);