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

news2024/12/23 22:51:57
一、写在前面

好久不见~最近接手了一个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.coloradmin.cn/o/2145079.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Renesas R7FA8D1BH (Cortex®-M85)内部RTC的应用

目录 概述 1 软硬件 1.1 软硬件环境信息 1.2 开发板信息 1.3 调试器信息 2 FSP配置RTC 2.1 配置参数 2.2 RTC模块介绍 3 RTC相关函数 3.1 R_RTC_Open() 3.2 R_RTC_Close() 3.3 R_RTC_ClockSourceSet() 3.4 R_RTC_CalendarTimeSet() 3.5 R_RTC_CalendarTimeGet()…

HC-SR04超声波传感器详解(STM32)

目录 一、介绍 二、传感器原理 1.原理图 2.引脚描述 3.工作原理介绍 三、程序设计 main.c文件 ultrasonic.h文件 ultrasonic.c文件 四、实验效果 五、资料获取 项目分享 一、介绍 HC-SR04超声波传感器是通过发送和接收超声波&#xff0c;利用时间差和声音传播速度…

Python编码系列—Python团队开发工作流:高效协作的艺术

&#x1f31f;&#x1f31f; 欢迎来到我的技术小筑&#xff0c;一个专为技术探索者打造的交流空间。在这里&#xff0c;我们不仅分享代码的智慧&#xff0c;还探讨技术的深度与广度。无论您是资深开发者还是技术新手&#xff0c;这里都有一片属于您的天空。让我们在知识的海洋中…

煤炭检测系统源码分享

煤炭检测检测系统源码分享 [一条龙教学YOLOV8标注好的数据集一键训练_70全套改进创新点发刊_Web前端展示] 1.研究背景与意义 项目参考AAAI Association for the Advancement of Artificial Intelligence 项目来源AACV Association for the Advancement of Computer Vision …

A股上市公司企业创新能力、质量、效率-原始数据+dofile+结果(2006-2023年)

上市公司的创新能力体现在其不断研发新技术、新产品和服务的能力上&#xff0c;这是企业保持竞争优势的关键&#xff1b;质量则是指公司所提供的产品或服务达到高标准的程度&#xff0c;高质量是赢得客户信任和市场份额的基础&#xff1b;效率则涵盖了生产运营中的资源利用程度…

天线工程师进阶指南:只会割铜皮式调天线,就Out了!跨学科天线设计介绍

❝本次推文简单介绍下跨学科天线设计。 什么是天线&#xff1f; 天线是一种变换器&#xff0c;它把传输线上传播的导行波&#xff0c;变换成在无界媒介&#xff08;通常是自由空间&#xff09;中传播的电磁波&#xff0c;或者进行相反的变换。 发射天线可以将来自发射机的高频…

资源创建方式

kubernetes支持两种创建资源的方式&#xff1a; 用kubectl命令直接创建&#xff0c;比如&#xff1a;kubectl run nginx-deployment --imagenginx1.7.9 --replicas2&#xff0c;在命令行中通过参数指定资源的属性 通过配置文件和kubectl apply创建&#xff0c;创建nginx.yml文…

9月18日

思维导图 配置桥接网络的过程 配置桥接网络 确保虚拟机提供了桥接模式菜单栏>编辑>虚拟机网络编辑器确保虚拟机可以设置桥接网络&#xff08;如无法通过桥接连接网络&#xff0c;则可以还原设置后重新尝试&#xff0c;如果还不行则找到VMware的软件安装包&#xff0c;双…

Pc端关于不同PDF阅读器的实际体验

因为马上研究生开学了&#xff0c;平时也会阅读很多pdf&#xff0c;实际上我们电脑上也自带一个pdf阅读的软件&#xff1a;也就是我们的edge&#xff0c;但是还是可能有些不够我们使用。下面是一些容易获取到的软件资源。 下面的评价仅是个人观点&#xff0c;请理性看待。 一…

【Pycharm使用技巧记录手册】批量检索与替换功能——辅助Yolo训练标签label配置文件构建

在yolo训练前的准备工作中&#xff0c;需要编写yaml配置文件中的信息。对于多分类问题&#xff0c;需要将其类别与索引一一对应。实践中&#xff0c;类别与索引的关系可能写在字典数据格式内&#xff0c;如何将其转换为配置文件内的信息&#xff0c;这是一个看起来简单但如果纯…

亲测有效,长期有效的RTSP流地址公网RTSP地址,各种类型的视频源

我们经常需要做一些实时视频流的测试&#xff0c;但是手边又没有办法及时弄到一个摄像机&#xff0c;我们经常会去搜索一下“公网RTSP地址”&#xff0c;但是大部分现在都失效了&#xff0c;有什么办法能够让我们快速构建一个RTSP流&#xff0c;点几下就能直接用&#xff1f; …

yolov5/8/9/10模型在车辆检测中的应用【代码+数据集+python环境+GUI系统】

yolov5/8/9/10模型在车辆检测中的应用【代码数据集python环境GUI系统】 1.背景意义 随着城市化进程的加速和机动车数量的激增&#xff0c;交通拥堵、交通事故等问题日益严重。传统的交通管理手段已经难以满足日益增长的交通需求。基于计算机视觉的车辆检测技术通过实时捕捉道路…

C/C++语言基础--C++面向对象、类、对象概念讲解

本专栏目的 更新C/C的基础语法&#xff0c;包括C的一些新特性 前言 今天更新的比较晚了&#xff0c;主要一直用是谷歌Colab训练模型&#xff0c;访问国内csdn反而不好使了&#xff0c;请大家见谅&#xff1b;C是面向对象的语言&#xff0c;本文将介绍什么是面向对象、什么是类…

jmeter+ant+git+jenkins

基于工具的接口自动化&#xff08;jmeterantgitjenkins&#xff09; 1.1 简介 Jmeter、Ant、Git和Jenkins是一套结合了测试、代码管理和持续集成/持续部署&#xff08;CI/CD&#xff09;的工具链&#xff0c;可以帮助开发者进行高效的接口开发和测试。这四个工具可以相互配合…

828华为云征文|华为云Flexus云服务器X实例之openEuler系统下部署SQLite数据库浏览器sqlite-web

828华为云征文&#xff5c;华为云Flexus云服务器X实例之openEuler系统下部署SQLite数据库浏览器sqlite-web 前言一、Flexus云服务器X实例介绍1.1 Flexus云服务器X实例简介1.2 Flexus云服务器X实例特点1.3 Flexus云服务器X实例使用场景 二、sqlite-web介绍2.1 sqlite-web简介2.2…

C语言 | Leetcode C语言题解之第406题根据身高重建队列

题目&#xff1a; 题解&#xff1a; int cmp(const void* _a, const void* _b) {int *a *(int**)_a, *b *(int**)_b;return a[0] b[0] ? a[1] - b[1] : b[0] - a[0]; }int** reconstructQueue(int** people, int peopleSize, int* peopleColSize, int* returnSize, int** …

TypeScript入门 (二)控制语句

引言 大家好&#xff0c;我是GISer Liu&#x1f601;&#xff0c;一名热爱AI技术的GIS开发者。本系列文章是我跟随DataWhale 2024年9月学习赛的TypeScript学习总结文档。本文主要讲解TypeScript中控制语句的部分&#xff1b;希望通过我的知识点总结&#xff0c;能够帮助你更好地…

OpenCV基础入门30讲(Python)——第一讲 环境配置

学习基础要求&#xff1a; 1、会Python。 版本要求&#xff1a; 1、电脑系统&#xff1a;Windows10&#xff08;理论上Ubuntu或者Windows10和Windows11都可以&#xff09; 2、Python版本&#xff1a;Python 3.8&#xff08;理论上Python 3.6-3.9都可以&#xff09; 3、OpenCV版…

微博计算架构实战

课前回顾-性能估算方法 用户量预估 用户行为建模和性能估算 高性能计算架构设计 发微博 发微博是写操作&#xff0c;可以用与写缓冲(Buffer)么&#xff1f;最好是不要加&#xff0c;写缓冲会使得写入速度变慢&#xff0c;比如发送了微博10分钟后&#xff0c;别人还看不到&…

Ansible——Playbook基本功能

文章目录 一、Ansible Playbook介绍1、Playbook的简单组成1&#xff09;“play”2&#xff09;“task”3&#xff09;“playbook” 2、Playbook与ad-hoc简单对比区别联系 3、YAML文件语法&#xff1a;1. 基本结构2. 数据类型3. 列表4. 字典&#xff08;映射&#xff09;5. 注释…