当前位置: 首页 > news >正文

flutter集成百度地图定位 ‘BMKLocationManager.h‘ file not found报错

一、写在前面

好久不见~最近接手了一个flutter的项目,需求是接入百度地图的定位插件。但是按照官网的文档来做,安卓没有问题,但是ios就惨了,各种编译报错。

flutter_bmflocation: ^3.6.0 集成报错 ‘BMKLocationManager.h’ file not found
有需要的可以直接拉最下面,看解决方案。

我也没写过原生开发的语言,所以这个对我一个写前端的来说还是有那么一丢丢难度。

关注公众号“笔优站长”可阅读全部文章哟。

二、报错的内容

编译报错
xcode的报错

报错

三、解决方案

百度官方的方案(我试了几次,一点卵用都没得,避坑!!!)
在这里插入图片描述
然后提了工单,来来回回很久了。还是没得一点卵用
在这里插入图片描述

最后的解决方案,我去看了一下源码和引用。就试着把头文件这里替换为

注意 #import <BMKLocationkit/BMKLocationComponent.h> 的BMKLocationkit的k要大写!!

#import <BMKLocationKit/BMKLocationComponent.h>

原文是去看的ios的原生定位开发文档,下面的原文链接:
https://lbs.baidu.com/faq/api?title=ios-locsdk/guide/get-location/once

终极方案

四、实测

在这里插入图片描述
测试Android 定位
在这里插入图片描述
测试 ios
在这里插入图片描述
一切正常,编译也不会报错了。大功告成~

再附上一部分源码
import 'dart:async';
import 'dart:io';import 'package:fl_location/fl_location.dart';
import 'package:flutter_bmflocation/flutter_bmflocation.dart';
import 'package:sem/common/utils/models/logger.dart';///
/// 位置服务相关
/// 
class BMLocation{////// 检查是否开启了位置权限///static Future<bool> checkAndRequestPermission({bool? background,}) async {if (!await FlLocation.isLocationServicesEnabled) {return false;}var locationPermission = await FlLocation.checkLocationPermission();if (locationPermission == LocationPermission.deniedForever) {// Cannot request runtime permission because location permission is denied forever.return false;} else if (locationPermission == LocationPermission.denied) {// Ask the user for location permission.locationPermission = await FlLocation.requestLocationPermission();if (locationPermission == LocationPermission.denied ||locationPermission == LocationPermission.deniedForever) {return false;}}// Location permission must always be allowed (LocationPermission.always)// to collect location data in the background.if (background == true && locationPermission == LocationPermission.whileInUse) {return false;}// Location services has been enabled and permission have been granted.return true;}////// 要获取当前位置,请使用该getLocation函数。///static Future<Location?> getLocation({bool showToast = false,String tips = '',Function? onConfirm,Function? onCancel}) async {if (await checkAndRequestPermission()) {try {final LocationFlutterPlugin location = LocationFlutterPlugin();// 调用此方法前,应用启动的时候一定要先设置隐私协议,否则无法使用... 这里是例子, setAgreePrivacy 建议是应用启动的时候用户同意相关隐私的时候就直接设置了.// location.setAgreePrivacy(true);await location.prepareLoc({'needAddress': true}, {'needAddress': true});if(Platform.isAndroid){await location.startLocation();Completer<BaiduLocation> completer = Completer<BaiduLocation>();// 接受定位回调location.seriesLocationCallback(callback: completer.complete);BaiduLocation locationData = await completer.future;location.stopLocation();return Location.fromJson({'latitude': locationData.latitude,'longitude': locationData.longitude});} if(Platform.isIOS){await location.singleLocation({'isReGeocode': true, 'isNetworkState': true});Completer<BaiduLocation> completer = Completer<BaiduLocation>();// 接受定位回调location.singleLocationCallback(callback: completer.complete);BaiduLocation locationData = await completer.future;return Location.fromJson({'latitude': locationData.latitude,'longitude': locationData.longitude});}} catch (e) {// SMToast.error(text: "获取当前位置出错");SMLog.e("获取当前位置出错:${e.toString()}");}}return null;}
}
五、写在后面

百度地图的flutter的坑是相当的多,我是踩了好几个了,需要注意的是flutter的开发文档不如原生的文档齐全,需要参考双端的原生文档更为稳妥。。。

有问题请留言或者@博主,谢谢支持o( ̄︶ ̄)o~

感谢您的阅读,如果此文章或项目对您有帮助,请扫个二维码点个关注吧,若可以的话再给个一键三连吧!

公众号阅读的朋友可以点一下右下角的在看分享哦。

GitHub有开源项目,需要的小伙伴可以顺手star一下!

GitHub: https://github.com/langyuxiansheng

更多信息请关注公众号: “笔优站长”

笔优站长

扫码关注“笔优站长”,支持站长

http://www.mrgr.cn/news/29766.html

相关文章:

  • 关于深度学习的一些工具安装与细节
  • Docker 基础命令介绍和常见报错解决
  • 重学 Android 自定义 View 系列(六):环形进度条
  • 1111111111待修改--大流量分析(三)-BUUCTF
  • C# 实现对指定句柄的窗口进行键盘输入的实现
  • Python从0到100(七十二):Python OpenCV-OpenCV实现手势音量控制(文末送书)
  • 计算机毕业设计 健身房管理系统的设计与实现 Java实战项目 附源码+文档+视频讲解
  • MySQL系列—12.Undo log
  • Apache SeaTunnel Zeta引擎源码解析(三) Server端接收任务的执行流程
  • 前后端分离的情况下,后端接口有必要加CSP策略吗?
  • Three.js
  • ChatGPT:强大的人工智能聊天机器人
  • 《深度学习》PyTorch框架 优化器、激活函数讲解
  • C/C++内存分布
  • [数据集][目标检测]智慧养殖场肉鸡目标检测数据集VOC+YOLO格式3548张1类别
  • 41. 如何在MyBatis-Plus中实现批量操作?批量插入和更新的最佳实践是什么?
  • 自监督的主要学习方法
  • C++list的使用:尾插、头插、insert、erase、reverse、sort等的介绍
  • Axure中后台管理信息系统通用原型方案
  • WSL中使用GPU加速AMBER MD--测试
  • Aegisub字幕自动化及函数篇(图文教程附有gif动图展示)(一)
  • 十八,Spring Boot 整合 MyBatis-Plus 的详细配置
  • 麒麟操作系统 xxl-job集群搭建
  • 一家CRO企业终止,业绩成长性遭质疑
  • 字幕编辑用什么软件好?盘点国内外7款视频加字幕软件,简单高效!
  • 传输层协议 —— UDP协议