irpas技术客

flutter 实现Android端百度地图定位_qq_36721830_flutter 百度地图

未知 6012

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 方法就可以了


1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,会注明原创字样,如未注明都非原创,如有侵权请联系删除!;3.作者投稿可能会经我们编辑修改或补充;4.本站不提供任何储存功能只提供收集或者投稿人的网盘链接。

标签: #Flutter #百度地图