IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 移动开发 -> flutter 实现Android端百度地图定位 -> 正文阅读

[移动开发]flutter 实现Android端百度地图定位

1、先在百度地图官网申请百度地图AK?百度地图开放平台 | 百度地图API SDK | 地图开发

2、安装flutter百度地图插件

 #百度定位
  flutter_bmflocation: ^1.0.4
  #权限申请
  permission_handler: ^5.1.0

3、?配置AndroidManifest.xml

<!--这个权限用于进行网络定位-->
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
<!-- 这个权限用于访问GPS定位-->
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
<!-- 用于访问wifi网络信息-->
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>

<meta-data
    android:name="com.baidu.lbsapi.API_KEY"
    android:value="百度地图ak" />

4、主要代码:

import 'package:flutter/material.dart';
//消息提示
import 'package:fluttertoast/fluttertoast.dart'; 
import 'package:flutter_bmflocation/bdmap_location_flutter_plugin.dart';
import 'package:flutter_bmflocation/flutter_baidu_location.dart';
import 'package:flutter_bmflocation/flutter_baidu_location_android_option.dart';
import 'package:flutter_bmflocation/flutter_baidu_location_ios_option.dart';


class _DetailItemLocationState extends State<DetailItemLocation> {
    
  LocationFlutterPlugin _locationPlugin = new LocationFlutterPlugin();
  //ios定位参数设置
  BaiduLocationIOSOption iosOption = new BaiduLocationIOSOption();
  BaiduLocationAndroidOption androidOption = new BaiduLocationAndroidOption();
  BaiduLocation _baiduLocation;
  var _locationListener;

  @override
  void initState() {
    super.initState();
    /// 设置ios端ak
    LocationFlutterPlugin.setApiKey("百度地图ak");
    _locationListener =
        _locationPlugin.onResultCallback().listen((Map<String, Object> result) {
          setState(() {
            try {
              _baiduLocation = BaiduLocation.fromMap(result);
              print(_baiduLocation);//定位的结果
                ... //这边写你定位后的处理逻辑
              _stopLocation(); //可以不要,不要的话是隔一段时间定位一次(根据你的参数配置),
            } catch (e) {
              print(e);
            }
          });
        });
  }

    
  @override
  void dispose() {
    super.dispose();
     //组件销毁取消监听
    if (null != _locationListener) {
      _locationListener.cancel();
    }
  }
  


//  设置定位参数
  void _setLocOption(){
    androidOption.setCoorType("bd09ll"); // 设置返回的位置坐标系类型
    androidOption.setIsNeedAltitude(true); // 设置是否需要返回海拔高度信息
    androidOption.setIsNeedAddres(true); // 设置是否需要返回地址信息
    androidOption.setIsNeedLocationPoiList(true); // 设置是否需要返回周边poi信息
    androidOption.setIsNeedNewVersionRgc(true); // 设置是否需要返回最新版本rgc信息
    androidOption.setIsNeedLocationDescribe(true); // 设置是否需要返回位置描述
    androidOption.setOpenGps(true); // 设置是否需要使用gps
    androidOption.setLocationMode(LocationMode.Hight_Accuracy); // 设置定位模式
    androidOption.setScanspan(1000); // 设置发起定位请求时间间隔
    Map androidMap = androidOption.getMap();
    Map iosdMap = iosOption.getMap();
    _locationPlugin.prepareLoc(androidMap,iosdMap); //ios和安卓定位设置
  }


//  开始定位
  void _startLocation(){
    if (null != _locationPlugin) {
     
      //申请定位权限
      requestPermission().then((value)=>{
        if(value){
          _setLocOption(),
          _locationPlugin.startLocation()
        }else {
          Fluttertoast.showToast(msg: '需要定位权限!')
        }
      });

    }
  }

  //  申请权限
  Future<bool> requestPermission() async {
    // 申请权限
    final status = await Permission.location.request();
    if (status.isGranted) {
      print("定位权限申请通过");
      return true;
    } else {
      print("定位权限申请不通过");
      return false;
    }
  }

  /// 停止定位
  void _stopLocation() {
    if (null != _locationPlugin) {
      _locationPlugin.stopLocation();
    }
  }


}

在需要定位的地方调用?_startLocation 方法就可以了

  移动开发 最新文章
Vue3装载axios和element-ui
android adb cmd
【xcode】Xcode常用快捷键与技巧
Android开发中的线程池使用
Java 和 Android 的 Base64
Android 测试文字编码格式
微信小程序支付
安卓权限记录
知乎之自动养号
【Android Jetpack】DataStore
上一篇文章      下一篇文章      查看所有文章
加:2022-01-28 12:02:03  更:2022-01-28 12:04:17 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 12:56:06-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码