Flutter集成高德定位和地图功能
定位集成
配置高德定位依赖库
新建 Flutter 项目,使用 Android Studio 打开项目里的 android 工程,或者右键 android 目录-> flutter -> open Android module in Android Studio。
在 Android 工程里,切换为 Android 视图:
打开 build.gradle 文件,添加定位依赖包:
implementation('com.amap.api:location:5.2.0')
点击 Sync Now 或者 工具栏上的图标同步依赖包:
打开清单文件AndroidManifest.xml,配置权限和服务:
<!--访问网络-->
<uses-permission android:name="android.permission.INTERNET" />
<!--粗略定位-->
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<!--精确定位-->
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<!--申请调用A-GPS模块-->
<uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS" />
<!--用于获取运营商信息,用于支持提供运营商信息相关的接口-->
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<!--用于访问wifi网络信息,wifi信息会用于进行网络定位-->
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<!--用于获取wifi的获取权限,wifi信息会用来进行网络定位-->
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
<!--用于读取手机当前的状态-->
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<!--用于写入缓存数据到扩展存储卡-->
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<!-- 配置定位Service -->
<service android:name="com.amap.api.location.APSService"/>
配置签名文件
高德平台需要签名的 sha1 ,所以需要配置签名文件,debug 模式调试和正式包各需要一个,也可以使用同一个 keystore 。 工具栏 Build -> Generate Signed Bundle / APK -> 选择 APK -> Next -> Create new ,打开 New Key Store 窗口:
key store path 选择当前项目根目录或者你喜欢的任何目录,命名为 debug.keystore 或者你喜欢的名字,两个地方的 Password 可以一样,Alias 需要填写,下面的 Certificate 填写一项即可:
点击 ok -> 点击 Next,选择 debug ,当然如果 debug 和 release 使用同一个签名文件的话也可同时选择 debug 和 release,并勾选 V2 签名:
完成后可以看到项目里的 debug.keystore 文件:
重复上面方法,再创建一个 release.keystore 文件。点击 Project Structure:
选择 Modules -> app -> Signing Configs -> + -> 默认有 debug,再添加一个 release ,分别选择对应的 keystore:
点击 ok 后再次打开 build.gradle 文件,可以看到签名配置对应刚才配置的签名文件:
signingConfigs {
debug {
storeFile file('/Users/apple/AndroidStudioProjects/flutter/map_demo/android/debug.keystore')
storePassword '123456'
keyAlias 'amap'
keyPassword '123456'
}
release {
storeFile file('/Users/apple/AndroidStudioProjects/flutter/map_demo/android/release.keytore')
storePassword '123456'
keyAlias 'amap'
keyPassword '123456'
}
}
高德平台 Key 申请
打开高德开放平台 | 高德地图API (amap.com),注册成为高德开放平台用户,打开控制台创建一个应用,填入对应的信息,这里有个错误,SHA1 其实是 MD5 ,不要填写 SHA1。
获取MD5: 在刚才的项目里,打开 Terminal,输入下面命令,路径就是 debug.keystore 和 release.keystore的路径:
keytool -list -v -keystore ./debug.keystore
输入秘钥库口令,就是设置的 Password ,复制 MD5 ,去高德开放平台粘贴。
发布版和调试版都设置后,复制 key 。
在清单文件里,配置apikey:
<!-- 配置定位Service -->
<service android:name="com.amap.api.location.APSService"/>
<meta-data
android:name="com.amap.api.v2.apikey"
android:value="f6c46787c43cb7df5510d9f4c530fd1e"/>
Flutter 文件配置
回到 Flutter 项目,添加高德定位库和权限申请依赖,执行 pub get :
amap_flutter_location: ^2.0.0
permission_handler:
在获取定位的入口配置权限申请,注册监听:
/// 动态申请定位权限
requestPermission();
///注册定位结果监听
_locationListener = _locationPlugin
.onLocationChanged()
.listen((Map<String, Object> result) {
setState(() {
_locationResult = result;
});
});
只要获取到定位,这里都会回调,result包含了很全的定位信息。 如果运行报错:INVALID_USER_KEY,说明你的 keystore 的 MD5 不正确,也许平台会把 SHA1 改为真正的 SHA1 ,所以不妨试试填入 SHA1。
地图集成
Android工程添加地图依赖
回到 Android 工程,添加地图依赖:
implementation 'com.amap.api:3dmap:5.0.0'
回到 Flutter 工程,在pubspec.yaml里添加插件依赖:
amap_flutter_map: ^2.0.1
在布局中使用 map :
final AMapWidget map = AMapWidget(
onMapCreated: onMapCreated,
// 定位小蓝点配置
myLocationStyleOptions: MyLocationStyleOptions(true),
// 是否指南针
// compassEnabled: true,
);
Android开发该如何快速上手Flutter?
我们可以利用 Flutter 官方网站的教程,搭建好环境,写出一些 Demo 示例,在此之后需要了解如何混合开发,“万物皆 Widget”到底怎么理解?对于 State 的理解等原理知识...
这些对我们Android开发来说都有一定的难度。
为了让大家快速无痛上手 Flutter,给大家分享一份阿里大神总结的《Flutter进阶学习笔记》。
整理大纲
为什么Flutter是跨平台开发的终极之选
在Windows上搭建Flutter开发环境
编写您的第一个 Flutter App
Flutter开发环境搭建和调试
Dart语法篇之基础语法(一)
Dart语法篇之集合的使用与源码解析(二)
Dart语法篇之集合操作符函数与源码分析(三)
Dart语法篇之函数的使用(四)
Dart语法篇之面向对象基础(五)
Dart语法篇之面向对象继承和Mixins(六)
Dart语法篇之类型系统与泛型(七)
Flutter中的widget
第一章 为什么Flutter是跨平台开发的终极之选
这是为什么?
跨平台开发
什么是 Flutter
Flutter 的特性
Flutter 构建应用的工具
使用 Flutter 构建的热门应用
构建 Flutter 应用的成本
……

第二章 在Windows上搭建Flutter开发环境
使用镜像
系统要求
获取Flutter SDK
编辑器设置
Android设置
起步: 配置编辑器
起步: 体验
体验热重载
创建新的应用
运行应用程序
……

第三章 编写您的第一个 Flutter App
第1步: 创建 Flutter app
第2步: 使用外部包(package)
第3步: 添加一个 有状态的部件(Stateful widget)
第4步: 创建一个无限滚动ListView
第5步: 添加交互
第6步: 导航到新页面
第7步:使用主题更改UI
……

第四章 Flutter开发环境搭建和调试
开发环境的搭建
模拟器的安装与调试
开发环境的搭建
模拟器的安装与调试
……

第五章 Dart语法篇之基础语法(一)
Hello Dart
数据类型
变量和常量
集合(List、Set、Map)
流程控制
运算符
异常
函数
……

第六章 Dart语法篇之集合的使用与源码解析(二)
List
Set
Map
Queue
LinkedList
HashMap
Map、HashMap、LinkedHashMap、SplayTreeMap区别
命名构造函数from和of的区别以及使用建议
……

第七章 Dart语法篇之集合操作符函数与源码分析(三)
Iterable
Iterable类关系图
Iterable类方法图
forEach
介绍
使用方式
源码解析
map
介绍
使用方式
源码解析
any
介绍
使用方式
源码解析
every
介绍
使用方式
源码解析
where
介绍
使用方式
源码解析
firstWhere和singleWhere和lastWhere
介绍
使用方式
源码解析
join
介绍
使用方式
源码解析
take
介绍
使用方式
源码解析
takeWhile
介绍
使用方式
源码解析
……

第八章 Dart语法篇之函数的使用(四)
函数参数
匿名函数(闭包,lambda)
箭头函数
局部函数
顶层函数和静态函数
main函数
……

第九章 Dart语法篇之面向对象基础(五)
属性访问器(accessor)函数setter和getter
面向对象中的变量
构造函数
抽象方法、抽象类和接口
类函数
……

第十章 Dart语法篇之面向对象继承和Mixins(六)
类的单继承
基于Mixins的多继承
……

第十一章 Dart语法篇之类型系统与泛型(七)
可选类型
接口类型
泛型
类型具体化
……

第十二章 Flutter中的widget
Flutter页面-基础Widget
Widget
StatelessWidget
Stateful Widget
State生命周期
基础widget
文本显示
……

文中篇幅有限,仅仅展示了一部分内容,所有资料都放在了【GitHub】,需要的朋友自行获取。
特别认同一句话:只有拥抱变化,才能比别人更早发现机会。
没有谁甘愿薪资增长缓慢或一直被无情压榨,或早或晚我们都会走上进阶之路。与其被动接受,不如主动出击,先争取成为技术强+思维深+视野广的工程师,机会来临时才能从容不迫地顺应而上,比别人更快一步。
Flutter集成高德定位和地图功能的更多相关文章
- android ------ 实现高德定位并获取相应信息 ( 最新版高德SDK 和 Android SDK版本)
Android开发项目时常常会遇到定位这个功能, 很久以前写过一篇了,官方也更新了一些东西,我也更新下 以前使用的是jar包 导入来实现高德定位 老版本 链接:https://www.cnblogs. ...
- vue集成高德地图
vue集成高德地图 前言 二.使用步骤 1.注册高德开发平台 2.vue 结尾 前言 之前玩Thymeleaf的时候玩过高德地图,现在无聊Vue项目也整个地图进去~ 二.使用步骤 1.注册高德开发平台 ...
- 高德定位腾讯定位在APP上无法开启定位权限的解决方案
[备注]公司项目中遇到的问题,如果你在团队工作其中定有不少配合方面的问题,其中的思路是可以借鉴的,因为这也许正是你们现在遇到的问题,总结的不好的地方还请多多指教 因为项目需求的确定,定位成了必不可少的 ...
- Android定位开发之百度定位、高德定位、腾讯定位,三足鼎立一起为我所用!
这几天的项目不是非常紧.于是想为未来可能要做的项目做一些技术储备. 下一个项目非常有可能是定位开发,须要用到手机定位功能,于是查了查如今比較流行的第三方定位,最火的基本上就是百度定位>高德定位& ...
- Flutter 使用高德地图定位
amap_location 包 获取debug SHA1 // 使用debug.keystore获取debug SHA1 C:\Users\ajanuw\.android>keytool -li ...
- Android Studio 中实现高德定位并获取相应信息
Android开发项目时常常会遇到定位这个功能,所以写了这篇博客,今天主要讲的高德地图的定位并获取相应信息. 首先导入高德的jar包 选中jar包右键点击 Add As Library, 在buil ...
- 关于ios11和Chrome浏览器非HTTPS 对高德定位不支持问题
最近,在开发二维码签到系统时,需要对用户的签到的经纬度进行获取,并且判断签到距离是否在可支持范围内. 使用了高德地图.因为本人最近刚刚入手了一款新的Iphone7里面是最新的ios11系统.发现我的手 ...
- iOS之集成GoogleMap定位、搜索注意事项
简介: 最近花了些时间看了GoogleMap官方文件并集成到国际版app中,网上关于GoogleMap for iOS的讲解相对Android来说少一点,比较有帮助的几乎全是英文文档.下面是我开发过程 ...
- Flutter 集成到现有iOS工程
前沿 由于我司已经有自己的App,flutter属于技术引进的一部分,也不太可能重新启动一个项目,因此目前我们是将flutter模块形式注入我们的App之中.即:将flutter模块集成到现在有iOS ...
随机推荐
- 测试开发:推荐一款阿里最新 Python 自动化开源工具!
大家好,我是麦小米,是狂师老师全栈测开训练营中的一名学员. 如果之前做过iOS自动化的同学相信都知道,一直以来,iOS自动化的实现&执行都必须依赖 Mac 系统,其主要原因是因为需要通过 xc ...
- 2、oracle用户和权限
权限主要可以分成三类:系统权限.角色.对象权限,角色是一类系统权限的分组, Oracle 的角色存放在表 dba_roles 中,某角色包含的系统权限存放在 dba_sys_privs 中, 包含的对 ...
- mysql中的空值
空值,即NULL,在数据库中通过is null 和is not null来查询 陷阱一:空值不一定为空 空值是一个比较特殊的字段.在MySQL数据库中,在不同的情形下,空值往往代表不同的含义.这是My ...
- vim编辑器使用方法(相关指令)
1.跳到文本的最后一行:按"G",即"shift+g" 2.跳到最后一行的最后一个字符 : 先重复1的操作即按"G",之后按"$& ...
- leetcode 1122
思路分析: 主要思想:计数排序 先遍历arr1,然后计数,再遍历arr2时同时又排完序了,再继续把arr2不存在的数字,再遍历加到数组后面,也同时排完序了.方便快捷
- Elasticsearch-04-master选举
3.2 master选举机制 3.2.1 选举算法 1)bully算法 核心思想 假定所有的节点都具有一个可以比较的ID,通过比较这个ID来选举master 流程说明 节点向所有比自己ID大的节点发送 ...
- ROS2学习之旅(2)——配置ROS2环境
目录 1.source一下setup文件 2.自动source 3.自动进入工作区(不常用) 4.检查环境变量是否设置成功 5.总结 ROS2依赖于使用shell(终端)环境组合工作空间的概念.工作空 ...
- java基础---枚举类与注解
一.枚举类 类的对象只有有限个,确定的.我们称此类为枚举类 如果枚举类中只有一个对象,则可以作为单例模式的实现方式. 定义枚举类 方式一:jdk5.0之前,自定义枚举类 public class Se ...
- (精)题解 guP2860 [USACO06JAN]冗余路径Redundant Paths
(写题解不容易,来我的博客玩玩咯qwq~) 该题考察的知识点是边双连通分量 边双连通分量即一个无向图中,去掉一条边后仍互相连通的极大子图.(单独的一个点也可能是一个边双连通分量) 换言之,一个边双连通 ...
- libzip开发笔记(二):libzip库介绍、ubuntu平台编译和工程模板
前言 Qt使用一些压缩解压功能,选择libzip库,libzip库比较原始,也是很多其他库的基础支撑库,编译过了windows版本,有需求编译一个ubuntu版本的,交叉编译需求的同样可参照本文章 ...