热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Flutter高德地图定位/搜索/路线规划–amap_base

pubspec.yaml中添加依赖amap_base:^0.3.5安卓苹果添加地图配置依赖:

pubspec.yaml 中添加依赖

amap_base: ^0.3.5

安卓 苹果添加地图配置依赖:

安卓:

build时报错

The Android Gradle plugin supports only Kotlin Gradle plugin version 1.3.0 and higher.
The following dependencies do not satisfy the required version:
project ‘:amp_base’ -> org.jetbrains.kotlin:kotlin-gradle-plugin:1.2.71

需要对gradle做降级处理,具体参考 https://www.jianshu.com/p/12ab33e8b8bb

Flutter 高德地图定位/搜索/路线规划--amap_base
ot K05 020448.png

降级后会继续报错:

Execution failed for task ‘:amap_base:compileDebugKotlin’.

跟踪错误信息中的错误文件位置将 ‘?’ 删掉。
之后会继续报错,错误信息是

Execution failed for task ‘:app:transformDexArchiveWithExternalLibsDexMergerForDebug’.

解决办法一:

在build.gradle(app) 中尝试在android{…}的defaultConfig{…}中加入以下代码:
multiDexEnabled true

解决办法二:

在build.gradle(app) 中尝试在android{…}的dependencies{…}中加入:
‘implementation ‘com.android.support:support-v4:28.0.0’

设置key:


android:name=”com.amap.api.v2.apikey”
android:value=”您的Key”/>

苹果:

io.flutter.embedded_views_preview
YES
NSLocationAlwaysUsageDescription
App需要您的同意,才能始终访问位置
NSLocationUsageDescription
App需要您的同意,才能访问位置
NSLocationWhenInUseUsageDescription
App需要您的同意,才能在使用期间访问位置

以上是安卓苹果的权限配置⬆️
以下Flutter 内GDMap通用代码⬇️

void main() async { await AMap.init('f1a72858d51ce608a92a29f0f001f7d1'); runApp(MyApp()); }

//初始化定位监听 void _initLocation() async { _amapLocation.init(); final optiOns= LocationClientOptions( isOnceLocation: true, //获取位置标题 locatingWithReGeocode: true, //获取坐标点 ); if (await Permissions().requestPermission()) { _amapLocation.startLocate(options).listen((_) => setState(() { _result = '坐标:${_.longitude},${_.latitude},地点:${_.aoiName} @ ${DateTime.now().hour}:${DateTime.now().minute}:${DateTime.now().second}'; })); } else { setState(() { _result = "无定位权限"; }); } }

AMapView( onAMapViewCreated: (controller) { setState(() => _cOntroller= controller); //_cOntroller= controller; controller.setZoomLevel(17); controller.setMyLocationStyle(MyLocationStyle( showsHeadingIndicator: false, myLocationType: LOCATION_TYPE_FOLLOW, showMyLocation: true, )); }, amapOptions: AMapOptions(), ),

以上是定位与地图展示,下面我们介绍路线规划,首先需要做的事定义一个用来展示路线的类:

/// 等待页 Future loading(BuildContext context, Future futureTask) { // 是被future pop的还是按返回键pop的 bool popByFuture = true; showDialog( context: context, builder: (context) { return WillPopScope( onWillPop: () async => false, child: Center( child: CupertinoActivityIndicator(), ), ); }, barrierDismissible: false, ).whenComplete(() { // 1. 如果是返回键pop的, 那么设置成true, 这样future完成时就不会pop了 // 2. 如果是future完成导致的pop, 那么这一行是没用任何作用的 popByFuture = false; }); return futureTask.whenComplete(() { // 由于showDialog会强制使用rootNavigator, 所以这里pop的时候也要用rootNavigator if (popByFuture) { Navigator.of(context, rootNavigator: true).pop(context); } }); } String jsonFormat(Map json) { JsonEncoder encoder = JsonEncoder.withIndent(' '); return encoder.convert(json); }

然后在调用处:

loading( context, AMapSearch().calculateDriveRoute( RoutePlanParam( from: LatLng(38.858448, 121.519633), to: LatLng(38.882006, 121.587922), ), ), ).then((result) { final allPoint = result.paths[0].steps .expand((step) => step.polyline) .toList(); result.paths[0].steps .expand((step) => step.TMCs) .forEach((tmc) { _controller.addPolyline((PolylineOptions( latLngList: tmc.polyline, width: 15, lineJoinType: PolylineOptions.LINE_JOIN_MITER, lineCapType: PolylineOptions.LINE_CAP_TYPE_ROUND, color: _getTmcColor(tmc.status), ))); }); _controller.zoomToSpan(allPoint); _controller.addMarkers( markerList .map((latLng) => MarkerOptions( // icon:, position: latLng, )) .toList(), ); }).catchError((e) => print('地图错误$e') //showError(context, e.toString()) );

位置搜索:

Button( label: '开始搜索', onPressed: (context) { loading( context, AMapSearch().searchPoi( PoiSearchQuery( query: _queryController.text, city: _cityController.text, ), ), ).then((poiResult) { setState(() { _maps = poiResult.toJson(); print(_maps["pois"][0]["title"]); }); }).catchError( (e) => print('地图错误$e') //showError(context, e.toString()) ); }, ),

好啦 ,以上就是 amap_base插件对高德地图的 定位 展示 搜索 路线规划的常规操作,有疑问欢迎留下评论,下期 更新 三种 即时通讯!!!


推荐阅读
  • 如何将TS文件转换为M3U8直播流:HLS与M3U8格式详解
    在视频传输领域,MP4虽然常见,但在直播场景中直接使用MP4格式存在诸多问题。例如,MP4文件的头部信息(如ftyp、moov)较大,导致初始加载时间较长,影响用户体验。相比之下,HLS(HTTP Live Streaming)协议及其M3U8格式更具优势。HLS通过将视频切分成多个小片段,并生成一个M3U8播放列表文件,实现低延迟和高稳定性。本文详细介绍了如何将TS文件转换为M3U8直播流,包括技术原理和具体操作步骤,帮助读者更好地理解和应用这一技术。 ... [详细]
  • 通过将常用的外部命令集成到VSCode中,可以提高开发效率。本文介绍如何在VSCode中配置和使用自定义的外部命令,从而简化命令执行过程。 ... [详细]
  • 使用ArcGIS for Java和Flex浏览自定义ArcGIS Server 9.3地图
    本文介绍了如何在Flex应用程序中实现浏览自定义ArcGIS Server 9.3发布的地图。这是一个基本的入门示例,适用于初学者。 ... [详细]
  • Spring 切面配置中的切点表达式详解
    本文介绍了如何在Spring框架中使用AspectJ风格的切面配置,详细解释了切点表达式的语法和常见示例,帮助开发者更好地理解和应用Spring AOP。 ... [详细]
  • 解决Only fullscreen opaque activities can request orientation错误的方法
    本文介绍了在使用PictureSelectorLight第三方框架时遇到的Only fullscreen opaque activities can request orientation错误,并提供了一种有效的解决方案。 ... [详细]
  • 大类|电阻器_使用Requests、Etree、BeautifulSoup、Pandas和Path库进行数据抓取与处理 | 将指定区域内容保存为HTML和Excel格式
    大类|电阻器_使用Requests、Etree、BeautifulSoup、Pandas和Path库进行数据抓取与处理 | 将指定区域内容保存为HTML和Excel格式 ... [详细]
  • 在软件开发过程中,经常需要将多个项目或模块进行集成和调试,尤其是当项目依赖于第三方开源库(如Cordova、CocoaPods)时。本文介绍了如何在Xcode中高效地进行多项目联合调试,分享了一些实用的技巧和最佳实践,帮助开发者解决常见的调试难题,提高开发效率。 ... [详细]
  • PTArchiver工作原理详解与应用分析
    PTArchiver工作原理及其应用分析本文详细解析了PTArchiver的工作机制,探讨了其在数据归档和管理中的应用。PTArchiver通过高效的压缩算法和灵活的存储策略,实现了对大规模数据的高效管理和长期保存。文章还介绍了其在企业级数据备份、历史数据迁移等场景中的实际应用案例,为用户提供了实用的操作建议和技术支持。 ... [详细]
  • 使用 ListView 浏览安卓系统中的回收站文件 ... [详细]
  • 技术日志:使用 Ruby 爬虫抓取拉勾网职位数据并生成词云分析报告
    技术日志:使用 Ruby 爬虫抓取拉勾网职位数据并生成词云分析报告 ... [详细]
  • 探索Web 2.0新概念:Widget
    尽管你可能尚未注意到Widget,但正如几年前对RSS的陌生一样,这一概念正逐渐走入大众视野。据美国某权威杂志预测,2007年将是Widget年。本文将详细介绍Widget的定义、功能及其未来发展趋势。 ... [详细]
  • 基于Web的Kafka管理工具Kafkamanager首次访问Web界面的详细配置指南(附图解)
    首次访问Kafkamanager Web界面时,需要对Kafka集群进行配置。这一过程相对简单,用户只需依次点击【Cluster】>【Add Cluster】,按照提示完成相关设置即可。本文将通过图文并茂的方式,详细介绍每一步的配置步骤,帮助用户快速上手Kafkamanager。 ... [详细]
  • 春日新芽象征着新的开始,正如学习如同春天的幼苗,虽不易察觉其成长,但每日都在进步;而中断学习则像磨刀石,虽表面无明显损耗,却日积月累地退步。这番话源自古代文人陶渊明的智慧,提醒我们珍惜时光,持续努力,方能迎来更加辉煌的未来。 ... [详细]
  • Composer 无法加载本地第三方库?如何解决这一常见问题 ... [详细]
  • 在Cisco IOS XR系统中,存在提供服务的服务器和使用这些服务的客户端。本文深入探讨了进程与线程状态转换机制,分析了其在系统性能优化中的关键作用,并提出了改进措施,以提高系统的响应速度和资源利用率。通过详细研究状态转换的各个环节,本文为开发人员和系统管理员提供了实用的指导,旨在提升整体系统效率和稳定性。 ... [详细]
author-avatar
那些触动你的回忆
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有