在flutter使用地图插件进行定位

在flutter使用地图插件进行定位
有多种插件可以使用 推荐第一种
1)
amap_base: x.x.x
amap_base_map: x.x.x # 仅地图
amap_base_navi: x.x.x # 仅导航(高德导航SDK已包含地图, 不要跟amap_base_map重复用)
amap_base_search: x.x.x # 仅搜索
amap_base_location: x.x.x # 仅定位
2)
该插件只有定位功能,(我使用的这种)

这要看你使用的插件,这里我提供两篇博客,
amap_base:
https://juejin.im/post/5d7c6a3851882538c05048b1,
官网: https://github.com/OpenFlutter/amap_base_flutter
amap_location :
https://segmentfault.com/a/1190000016342825
官网: https://github.com/best-flutter/flutter_amap_location
以上两篇供参考,

看得懂博客就不需要往下看了,看不懂可以往下看

先从dart package找到插件版本 然后添加到yaml文件中,
在这里插入图片描述

然后,进入高德官网 https://lbs.amap.com/dev/key/app

进入高德地图官网,有账号则不用创建,没有需要创建一个账号,
有了账号后,登录后,会有
在这里插入图片描述
点过去,,然后
在这里插入图片描述
点到我的应用,
开始创建key,----------画重点
第一步:先创建一个应用,名字以及类别你自己写,
然后,进入主题

点+号开始创建key
在这里插入图片描述
我把那段获取SHA1 码的放这里,方便复制

keytool -list -v -keystore "C:\Users\你自己电脑用户名\.android\debug.keystore" -alias androiddebugkey -storepass android -keypass android

关于那个包名
Android
在这里插入图片描述
IOS
在这里插入图片描述

配置key
Android:
第 1 步,配置AndroidManifest.xml
在这里插入图片描述

首先,声明Service组件
请在application标签中声明service组件,每个app拥有自己单独的定位service

<service android:name="com.amap.api.location.APSService"></service>

然后,声明权限

<!--用于进行网络定位-->
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"></uses-permission>
<!--用于访问GPS定位-->
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"></uses-permission>
<!--用于获取运营商信息,用于支持提供运营商信息相关的接口-->
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"></uses-permission>
<!--用于访问wifi网络信息,wifi信息会用于进行网络定位-->
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"></uses-permission>
<!--用于获取wifi的获取权限,wifi信息会用来进行网络定位-->
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE"></uses-permission>
<!--用于访问网络,网络定位需要上网-->
<uses-permission android:name="android.permission.INTERNET"></uses-permission>
<!--用于读取手机当前的状态-->
<uses-permission android:name="android.permission.READ_PHONE_STATE"></uses-permission>
<!--用于写入缓存数据到扩展存储卡-->
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission>
<!--用于申请调用A-GPS模块-->
<uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS"></uses-permission>
<!--用于申请获取蓝牙信息进行室内定位-->
<uses-permission android:name="android.permission.BLUETOOTH"></uses-permission>
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN"></uses-permission>

最后,设置高德Key
你在高德创建的key
在这里插入图片描述

<meta-data android:name="com.amap.api.v2.apikey" android:value="//你的key "/>       

下面这里也需要设置一下
在这里插入图片描述
在这里插入图片描述

供复制:

/// 高德地图key
manifestPlaceholders = [
        AMAP_KEY : "dd3218316a186fdd865d3a8cb0a50e30",
]
    implementation 'com.amap.api:location:latest.integration'
    implementation 'androidx.appcompat:appcompat:1.0.0'

至此,所有配置完成, 下面是使用方法

amap_location 推荐和permission_handler权限插件一起使用
有时候配了权限但是没有给到,所以推荐每次定位前都进行权限校验,

使用之前需要启动定位插件

await AMapLocationClient.startup(new AMapLocationOption( desiredAccuracy:CLLocationAccuracy.kCLLocationAccuracyHundredMeters ));

在这里插入图片描述

void getLocation() async {
  print('获取定位');
  // 申请权限 定位权限
  Map<PermissionGroup, PermissionStatus> permissions = await PermissionHandler().requestPermissions([PermissionGroup.location]);
  // 申请结果
  PermissionStatus permission = await PermissionHandler().checkPermissionStatus(PermissionGroup.location);
  print('PermissionStatus.granted${PermissionStatus.granted}');
  if (permission == PermissionStatus.granted) {
    Fluttertoast.showToast(msg: "权限申请通过");

    await AMapLocationClient.getLocation(true).then((_) {
      print('获取的latitude${_.latitude}');
      print('获取的longitude${_.longitude}');
     
    });
  } else {
    Fluttertoast.showToast(msg: "权限申请被拒绝");
  }
}

IOS:上面的配置了,在main方法添加一句
AMapLocationClient.setApiKey(“你申请的key”);应该就可以了

到此结束了,谢谢观看

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值