Flutter如何获取当前位置经纬度 geolocator、location之外有什么可用插件?
Flutter定位插件替代方案及现有问题优化
可用的替代定位插件
amap_flutter_location:高德地图官方推出的Flutter定位插件,针对国内网络环境、基站与WiFi定位数据源做了适配优化,常规场景下1-3秒即可返回定位结果,支持高精度、低功耗等多种定位模式,还可配套使用同系列地图、地理编码逆编码相关能力。baidu_map_location:百度地图官方推出的定位插件,定位成功率高,基本不会出现定位结果返回null的问题,除基础定位外还支持后台定位、地理围栏等扩展功能,国内场景适配性优于通用海外定位插件。location_plus:基于原版location插件迭代优化的分支版本,修复了原版getLocation()方法偶现返回null的问题,接口使用方式和原版基本一致,原有使用location的代码只需小幅调整即可完成迁移。
现有插件问题优化方案
你当前使用的两款插件遇到的问题也可以通过参数配置调整解决:
geolocator定位慢的问题:你当前使用的LocationAccuracy.best精度等级会强制拉取最高精度GPS信号,需要等待卫星信号稳定才会返回,耗时自然较长。普通业务场景下将精度调整为LocationAccuracy.high即可满足需求,定位响应时间可压缩到2-3秒。location返回null的问题:调用getLocation()前先通过hasPermission()接口确认定位权限已正常授予,同时给方法增加3秒超时逻辑,超时后自动重新调用一次接口,可大幅降低空返回概率。
Geolocator Plugin Code
var latitude = ""; var longitude = ""; Position position = await Geolocator.getCurrentPosition( desiredAccuracy: LocationAccuracy.best); latitude = position.latitude.toString(); longitude = position.longitude.toString(); print(latitude); print(longitude);
内容的提问来源于stack exchange,提问作者Mohammed Nabil
相关产品推荐
相关产品推荐

