可参考官方的demo
1、第三方依赖

amap_base_map: ^0.4.4+1

测试的时候,发现本本冲突,主版本为解决冲突,改用develop分支()
base分支功能不全,
但是amap_base_map存在错误,需要注释修改元代码。
map/android/src/main/kotlin/me/yohom/amapbasemap/map/MapHandlers.kt

object OpenOfflineManager : MapMethodHandler {override fun with(map: AMap): MapMethodHandler {return this}//报错代码注释override fun onMethodCall(methodCall: MethodCall, methodResult: MethodChannel.Result){}/*override fun onMethodCall(p0: MethodCall?, p1: MethodChannel.Result?) {registrar.activity().startActivity(Intent(AMapBaseMapPlugin.registrar.activity(),OfflineMapActivity::class.java))}*/
}
amap_base:git:url: https://github.com/yohom/amap_base_flutter.gitref: developpath: base

2、
\app\src\main\AndroidManifest.xml

 <!--定位权限()--><uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /><uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /><applicationandroid:name="io.flutter.app.FlutterApplication"android:label="flutter_01"android:icon="@mipmap/ic_launcher"><meta-dataandroid:name="com.amap.api.v2.apikey"android:value="高德地图的key"/></application>

3、简单显示地图
功能:1、地图显示。
2、标注。
3、获取去当前位置。
4、简单权限判断。

import 'package:flutter/material.dart';
import 'package:amap_base_map/amap_base_map.dart'; //高德地图amap_base_map
import 'package:amap_base_location/amap_base_location.dart'; //高德地图amap_base_location
import 'dart:math';
import 'package:fluttertoast/fluttertoast.dart'; //提示框
import 'package:permission_handler/permission_handler.dart';//权限
/*** ShowMapScreen* 地图缩放* 标注*/
class ShowMapScreen extends StatefulWidget {@override_ShowMapScreenState createState() => _ShowMapScreenState();
}
const markerList = const [LatLng(30.308802, 120.071179),LatLng(30.2412, 120.00938),LatLng(30.296945, 120.35133),LatLng(30.328955, 120.365063),LatLng(30.181862, 120.369183),
];
class _ShowMapScreenState extends State<ShowMapScreen> {AMapController _controller;final _amapLocation = AMapLocation();//定位double lat ;double lng ;@overridevoid initState() {_getLocation();super.initState();}@overrideWidget build(BuildContext context) {return Scaffold(appBar: AppBar(title: const Text('绘制点标记'),backgroundColor: Colors.black,centerTitle: true,),body: Builder(builder: (context) {return AMapView(onAMapViewCreated: (controller) {_controller = controller;//插件代码报错,剪到本地git,有修改。_controller.mapClickedEvent.listen((it){//处理点击事件//清空标记_controller.clearMarkers();//标点_controller.addMarker(MarkerOptions(position: it,));//缩放定位_controller.changeLatLng(it);});//点击标注图标执行/*controller..addMarkers(markerList.map((latLng) =>MarkerOptions(icon: 'images/home_map_icon_positioning_nor.png',position: latLng,title: '哈哈',snippet: '呵呵',object: '测试数据$latLng',)).toList(),)..setZoomLevel(10);*/},amapOptions:AMapOptions(compassEnabled: false,zoomControlsEnabled: true,logoPosition: LOGO_POSITION_BOTTOM_CENTER,camera: CameraPosition(target: LatLng(40.851827, 111.801637),zoom: 15,),),);},),floatingActionButtonLocation: FloatingActionButtonLocation.centerFloat,floatingActionButton: FloatingActionButton(child: Icon(Icons.add),onPressed: () async {_getLocation();//_clearLocation();/*final nextLatLng = _nextLatLng();await _controller.addMarker(MarkerOptions(position: nextLatLng,));await _controller.changeLatLng(nextLatLng);*/},),);}@overridevoid dispose() {_controller.dispose();super.dispose();}
//随机生成经纬度LatLng _nextLatLng() {final _random = Random();double nextLat = (301818 + _random.nextInt(303289 - 301818)) / 10000;double nextLng = (1200093 + _random.nextInt(1203691 - 1200093)) / 10000;return LatLng(nextLat, nextLng);}//清空标记_clearLocation(){//_controller.clearMap();_controller.clearMarkers();}//定位标记_getLocation()async{_amapLocation.init();final options = LocationClientOptions(isOnceLocation: true,locatingWithReGeocode: true,);//监听可以获取位置_amapLocation.startLocate(options).listen((location) => setState(() {lat = location.latitude;lng = location.longitude;if(lat>0&&lng>0){checkPersmission();}else{getFloat('获取位置失败,请检测GPS是否开启!');}}));}//是否开启权限void checkPersmission() async {// 申请权限Map<PermissionGroup, PermissionStatus> permissions =await PermissionHandler().requestPermissions([PermissionGroup.location]);// 申请结果PermissionStatus permission =await PermissionHandler().checkPermissionStatus(PermissionGroup.location);if (permission == PermissionStatus.granted) {///地图标注final nextLatLng = LatLng(lat, lng);//清空标记_controller.clearMarkers();//标点_controller.addMarker(MarkerOptions(position: nextLatLng,));//缩放定位_controller.changeLatLng(nextLatLng);} else {getFloat('请打开GPS和允许定位权限');}}//判空bool isNotEmpty(var text){if(text==null||text.toString().isEmpty||text.toString()=='null'||text.toString()==null){return false;}else{return true;}}//提示框getFloat(String text) {Fluttertoast.showToast(msg: text,toastLength: Toast.LENGTH_SHORT,gravity: ToastGravity.CENTER,timeInSecForIos: 2,fontSize: 16.0);}
}

4、绘制线路
另外引入插件

decorated_flutter: ^0.6.1   #绘制地图时用

测试代码

import 'package:amap_base_location/amap_base_location.dart'; //高德地图amap_base_location
import 'package:amap_base_map/amap_base_map.dart'; //高德地图amap_base_map
import 'package:decorated_flutter/decorated_flutter.dart'; //绘制图形时用
import 'package:flutter/material.dart';/*** DrawMapScreen* 地图缩放* 标注*/
class DrawMapScreen extends StatefulWidget {@override_DrawMapScreenState createState() => _DrawMapScreenState();
}class _DrawMapScreenState extends State<DrawMapScreen> {AMapController _controller;final _amapLocation = AMapLocation(); //定位double lat;double lng;//List<LatLng> markerList = [];@overridevoid initState() {super.initState();}@overrideWidget build(BuildContext context) {return Scaffold(appBar: AppBar(title: const Text('绘制轨迹'),backgroundColor: Colors.black,centerTitle: true,),body: Builder(builder: (context) {return AMapView(onAMapViewCreated: (controller) {_controller = controller;//插件代码报错,剪到本地git,有修改。_controller.mapClickedEvent.listen((it) {//保存坐标markerList.add(it);//清空标记//_controller.clearMarkers();//标点_controller.addMarker(MarkerOptions(position: it,));//缩放定位_controller.changeLatLng(it);});},amapOptions: AMapOptions(compassEnabled: false,zoomControlsEnabled: true,logoPosition: LOGO_POSITION_BOTTOM_CENTER,camera: CameraPosition(target: LatLng(39.909502146634765, 116.39765137983694),//定位到天安门的坐标zoom: 10,),),);},),floatingActionButtonLocation: FloatingActionButtonLocation.centerFloat,floatingActionButton: FloatingActionButton(child: Icon(Icons.add),onPressed: () async {//绘制图形_drawLine();},),);}//绘制图形_drawLine() {if (markerList.length > 0) {//清空标记_controller.clearMarkers();//起点图标标注_controller.addMarker(MarkerOptions(position: markerList[0],icon: 'images/start.png',title: '开始',snippet: '呵呵',object: '测试数据',));if (markerList.length > 1) {//终点图标标注_controller.addMarker(MarkerOptions(position: markerList[markerList.length-1],icon: 'images/end.png',title: '开始',snippet: '呵呵',object: '测试数据',));}loading(context,_controller.addPolyline(PolylineOptions(latLngList: markerList,color: Colors.red,isDottedLine: true,isGeodesic: true,dottedLineType: DOTTED_LINE_TYPE_CIRCLE,width: 10,),)).catchError((e) => showError(context, e.toString()));}}@overridevoid dispose() {_controller.dispose();super.dispose();}
}

【flutter】整合高德地图amap_base相关推荐

  1. flutter集成高德地图获取位置

    flutter集成高德地图获取位置 准备工作 在创建安卓应用 获取SHA1 获取当前位置 添加依赖 文件配置 build.gradle文件配置 AndroidManifest.xml配置 获取定位 准 ...

  2. flutter踩坑高德地图amap_base

    参考这篇简书:https://www.jianshu.com/p/714efea0927e flutter中使用高德地图的amap_base插件,报错,搞了老半天,还是上网的原因 修改项目文件夹下的a ...

  3. flutter引入高德地图_Flutter笔记-调用原生IOS高德地图sdk

    一.前言 2017年底因公司业务组合部门调整,新的团队部分维护的项目用React Native技术混合开发.为适应环境变化,开启疯狂RN学习之旅,晚上回来啃资料看视频.可能由于本身对RN技术体验不感冒 ...

  4. flutter 使用 高德地图选取位置

    使用了两个官方插件: amap_flutter_map | Flutter Package amap_flutter_location | Flutter Package #高德定位 amap_flu ...

  5. flutter引入高德地图_玩玩Flutter Web —— 实现高德地图插件

    Red Deer 1.啰嗦几句 去年写了一个功能简单的高德地图插件给flutter_deer使用,当时支持了Android与iOS两端.前一阵子有一个issue问是否会支持Flutter Web,当时 ...

  6. Flutter 调用高德地图APP实现位置搜索、路线规划、逆地理编码

    1 开发准备 pubspec.yaml 配置文件中添加插件 dependencies:flutter:sdk: flutterurl_launcher: ^6.1.2 iOS 配置 info.plis ...

  7. 微信小程序整合高德地图获取定位经纬度信息

    1.登录高德地图https://lbs.amap.com/ a.创建新应用 这个key后边整合的时候会用到,精彩继续 b.下载SDK  https://lbs.amap.com/api/wx/down ...

  8. flutter引入高德地图_flutter配置高德地图SDK

    在项目目录 android/app目录下build.gradle 文件内添加如下代码 android { defaultConfig { manifestPlaceholders = [ LOCATI ...

  9. Android 整合高德地图SDK实现 地图预览,定位,模拟导航

    一.准备工作 1. 到高德地图官方网申请key: 我的应用 | 高德控制台 2. 申请key方法请参考:获取Key-创建工程-开发指南-Android 地图SDK | 高德地图API 3. 出现的问题 ...

  10. flutter引入高德地图_Flutter引入高德地图插件黑屏/白屏

    |:-| totem 1.黑屏 缺少相关的"地图资源assert" 2.白屏 无网络 举例说明 1.黑屏 buildTypes 配置: buildTypes { debug { / ...

最新文章

  1. python-pcl GPU、输入输出模块教程翻译
  2. 库函数、系统调用和内核函数的区别
  3. LPWSTR 类型的实参与const.char *类型形参不兼容
  4. docker中启动关闭删除所有的容器命令
  5. 求π的值(信息学奥赛一本通-T1156)
  6. bat产品经理能力模型_浅析产品经理能力模型
  7. oracle在日本遇到的技术问题
  8. c#事件的发布-订阅模型_NET Core 3 WPF MVVM框架 Prism系列之事件聚合器
  9. 有道翻译js解密(1)
  10. JS Learun 消息对话框
  11. 刽子手c语言,古代神秘职业:刽子手的祖师爷
  12. 光波传输的角谱理论【理论,实例及matlab代码】
  13. ORACLE SQL 优化
  14. 基于R统计分析——样本与分布
  15. 装了伽卡他卡打不开任务管理器的解决办法
  16. (前端)html与css css 18、清除浮动,溢出隐藏
  17. python计算向量的模_计算Python Numpy向量之间的欧氏距离实例
  18. 华为入局网约车,已在多个城市测试“ Petal 出行”应用
  19. 公司到底想要什么样的人?
  20. 微软Office默认禁用Flash开启方法

热门文章

  1. 「视频」PISCES要先派机器人去外太空,帮人类建立另一个家园?
  2. CS5218 DP转HDMI 4K30HZ转换方案
  3. Python中参数前面的星号
  4. 明源售楼系统技术解析 签约管理(二)
  5. 认识即时通讯开发通信协议之MQTT
  6. 由 12306.cn 谈谈高并发+高负载网站性能技术
  7. python怎么编写口算题_用Python开发小学二年级口算自动出题程序
  8. php执行fastlane,fastlane教程
  9. python3.7-secrets模块
  10. 考虫四级词汇思维导图