Flutter百度地图定位插件与地理围栏插件冲突问题

在开发Flutter应用时,遇到在同一个页面同时使用百度地图的定位和地理围栏组件导致功能失效的问题。解决方案是将定位和围栏功能分别放在两个页面,通过透明加载页面传递经纬度,利用event_bus组件实现跨页面通信。当从地理围栏页面返回并尝试重新定位时,出现定位失败。通过设置独立的定位loading页面,解决了组件交互和数据传递的问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

我在开发app签到功能时使用了百度地图sdk,我的需求是需要定位当期那位置并在当前位置限定范围距离内的位置才可以打卡,并且要在地图上进行展示。所以也就需要同时用到定位组件LocationFlutterPlugin和地理围栏组件GeofenceFlutterPlugin。在单独使用这两个组件的时候是没有任何问题的,但是当两个组件出现在同一页面时组件就失效了,定位后无法画出围栏,于是我将两个组件分开到了两个页面,现在A页面定位后将坐标传至B页面后显示地理围栏。这样逻辑上是没有问题,但是我这么操作后出现新的问题,当我从B页面调用接口打卡发回A页面后当我想再次选择新的地理位置调用定位组件时不会有返回结果。针对这个问题,应该是百度sdk内部的组件没销毁之类的所致吧,毕竟用的是百度sdk的官方组件,深究下去意义不大,我的处理方法是给定位组件单独设置了一个透明的loading页面,展示定位中的动画,当获取经纬度成功后关闭当前loading页面并跳转至地图页面画下地理围栏,相当于是三个页面间的交互,至于页面值的回传因为多了一个已经关闭的loading页面,所以通过flutter自带的api是无法直接传回来了,所以这里使用了event_bus组件将选好的地点信息返回到之前的页面。

以上就是个人的解决思路。 

在将一个页面透明化弹窗化时需要使用如下方式跳转,opaque属性设置为false才能透明。

                onTap: () async {
                  Navigator.of(context).push(PageRouteBuilder(
                      opaque: false,//重点是这个属性
                      pageBuilder: (context, animation, secondaryAnimation) {
                        return BdLocationWindowPage(
                          signRange: signTempEntity.signRange,
                        );  
                      }));
                },

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值