zoukankan      html  css  js  c++  java
  • flutter 定位 amap_location_fluttify

    flutter 当前版本 1.17.5

    安装

    amap_location_fluttify: ^0.20.0 # 定位 经纬度 地理位置信息
    permission_handler: ^5.0.0 # 检测权限,没有权限就申请

    集成的高德地图,要先去申请 key 值

    android 设置 

     在android/app/res/src/main/AndroidManifest.xml 设置权限和 key

    <!--用于进行网络定位-->
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"></uses-permission>
    <!--用于访问GPS定位--> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"></uses-permission> <!-- 高德定位key --> <meta-data android:name="com.amap.api.v2.apikey" android:value="你的key"/>

    ios 设置 在 info.plist 中添加权限

    <key>NSLocationWhenInUseUsageDescription</key>
    <string>要用定位</string>

    使用方法

    // 定位
    import 'package:amap_core_fluttify/amap_core_fluttify.dart';
    import 'package:amap_location_fluttify/amap_location_fluttify.dart';
    import 'package:permission_handler/permission_handler.dart';
    
    // 返回数据方法类型
    // issuccess 是否定位成功,data: 定位成功的数据
    typedef CbackFunction = void Function(bool issuccess, Map data);
    
    class Location {
      var locationListener;
      CbackFunction cback; // 传值回调-返回定位结果
      Location.init(CbackFunction fun) {
       // ios 设置 key AmapLocation.instance.init(iosKey:
    '你的key');
      // 验证权限 getLocationPermission(); cback
    = fun; } // 验证权限 getLocationPermission() async { bool status = await Permission.location.isGranted; //判断如果还没拥有读写权限就申请获取权限 if (!status) { return await Permission.location.request().isGranted; } else { return status; } } // 定位 startLocation() async { try { final position = await AmapLocation.instance.fetchLocation(); if (position == null) { throw Exception('定位失败!'); } else { Map<String, dynamic> result = { 'latitude': position.latLng.latitude, 'longitude': position.latLng.longitude, 'address': position.address }; // 获取定位结果 if (cback != null) { cback(true, result); } } } catch (e) { cback(false, {}); print(e); } } }

    我这里初始化的是 就调用了 验证权限,也可以在每次调用定位之前 验证权限。

      

    该插件定位在android 遇到过一个问题,就是在开发的时候 不能定位,

    报错如下

    这里又一个 SHA1 码,好像是写死在里面的,如果我用这个 SHA1 去申请 高德定位 android 的key, 那么开发模式也可以定位成功。

    用自己android 证书的  SHA1 申请的key 定位不了,后来试了一下打包之后 是能定位成功的,就是开发模式异常 没多大影响,且 ios 是完全正确的

    我这里只用到了 单次定位,更多api 可以去包网站查看  https://pub.flutter-io.cn/packages/amap_location_fluttify/example

  • 相关阅读:
    2018年5月29号(堆排序最小顶)
    2018年5月31号(树状数组)
    2018年5月27号(spfa判断负环)
    2018年6月1号(线段树(1))
    2018年5月28号(差分约束)
    Inno Setup入门(十二)——Pascal脚本(1)
    Inno Setup入门(十六)——Inno Setup类参考(2)
    Inno Setup入门(二十一)——Inno Setup类参考(7)
    Inno Setup入门(十)——操作注册表
    Inno Setup入门(十八)——Inno Setup类参考(4)
  • 原文地址:https://www.cnblogs.com/bruce-gou/p/14120680.html
Copyright © 2011-2022 走看看