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 ...
随机推荐
- 用“kill”命令来强制终结某个行为或失常的应用和命令
首先让我们先了解"kill"命令,无论你使用哪种操作系统,你一定会遇到某个行为失常的应用,它把自己锁死并拒绝关闭.在Linux(还有Mac),你可以用一个" ...
- webpack(5)webpack处理css文件
css文件处理-准备工作 (以下项目配置都是基于上一篇webpack(4)的基础上) 在项目开发中,我们必然需要添加很多的样式,而样式我们往往写到一个单独的文件中. 这里我们就在src目录中创建一个n ...
- buu crypto 幂数加密
一.这和二进制幂数加密有些不同,可以从数字大小判断出来,超过4了,一般4以上已经可以表达出31以内了,所以是云影密码,以0为分隔符,01248组成的密码 二.python代码解密下 code=&quo ...
- 『与善仁』Appium基础 — 2、常用Android模拟器的安装
目录 1.Android Virtual Devices模拟器 2.Genymotion模拟器 (1)Genymotion模拟器下载 (2)模拟器Genymotion安装 (3)Genymotion模 ...
- C语言:地址
一切都是地址 C语言用变量来存储数据,用函数来定义一段可以重复使用的代码,它们最终都要放到内存中才能供 CPU 使用.数据和代码都以二进制的形式存储在内存中,计算机无法从格式上区分某块内存到底存储的是 ...
- IE浏览器查看星号密码
用CHROME打开保存密码的网页,F12,右击"密码框"检查,编辑属性:password改为passw(只要不是password即可)即可显示密码
- C语言:源代码兼容WINDOWS LINUX
使用库函数之前,应该用#include引入对应的头文件.这种以#号开头的命令称为预处理命令.C语言源文件要经过编译.链接才能生成可执行程序:1) 编译(Compile)会将源文件(.c文件)转换为目标 ...
- SpringBoot通过Ajax批量将excel中数据导入数据库
Spring Boot通过Ajax上传Excel并将数据批量读取到数据库中 适合场景:需要通过excel表格批量向数据库中导入信息 操作流程 [1]前端上传一个excel表格 [2] 后端接收这个ex ...
- java并发编程基础——线程池
线程池 由于启动一个线程要与操作系统交互,所以系统启动一个新的线程的成本是比较高的.在这种情况下,使用线程池可以很好的提升性能,特别是程序中涉及创建大量生命周期很短暂的线程时. 与数据库连接池类似,线 ...
- 基于IDEA的JAVA开发[第一集]:在Linux上安装IDEA
1,因为买了荣耀的magicbook pro 锐龙版,系统是Linux,以后打算直接在Linux上开发.本来熟悉Myeclipse,下载了Myeclipse2017 for Linux,但是安装中出现 ...