百度定位(Android、Flutter)

21 篇文章 0 订阅
1 篇文章 0 订阅

百度地图 ,导航

Flutter 百度地图

集成步骤(以Flutter Android 为例):

  1. 注册开发者账号
  2. 创建应用,设置应用类型(Android SDK、IOS SDK等)获取AK
  3. 设置Android端AK
<application android:name=".MyApplication">
        <meta-data
            android:name="com.baidu.lbsapi.API_KEY"
            android:value="请在此输入您在开放平台上申请的API_KEY" />
          ......
</application>
  1. 集成百度地图定位Flutter插件
// 工程pubspec.yaml文件添加如下代码

// 百度定位
flutter_bmflocation: ^3.3.0
// 百度地图
flutter_baidu_mapapi_map: ^3.3.0
  1. 代码中展示地图

BMFMapOptions mapOptions = BMFMapOptions(
        center: BMFCoordinate(39.917215, 116.380341),
        zoomLevel: 12,
        mapPadding: BMFEdgeInsets(left: 30, top: 0, right: 30, bottom: 0));
        
Container(
      height: screenSize.height,
      width: screenSize.width,
      child: BMFMapWidget(
        onBMFMapCreated: (controller) {
          onBMFMapCreated(controller);
        },
        mapOptions: mapOptions,
      ),
    );

国内APP开发,只要有基于定位需求,就会关注一下百度定位

1. 程序员关心的几个问题

  1. 百度地图定位SDK使用什么坐标系?
  • 三种类型的坐标,分别是国测局坐标、百度墨卡托坐标和百度经纬度坐标
  • 其中百度经纬度坐标能无偏差地显示在百度地图上
  • 如果当前定位点为海外,默认且只能返回WGS84类型的坐标,即火星坐标
  1. 什么是国测局坐标、百度坐标、WGS84坐标?
  • WGS84:表示GPS获取的坐标
  • GCJ02:是由中国国家测绘局制订的地理信息系统的坐标系统。由WGS84坐标系经加密后的坐标系
  • BD09:为百度坐标系,在GCJ02坐标系基础上再次加密。其中BD09II表示百度经纬度坐标,BD09MC表示百度墨卡托米制坐标
  1. 百度坐标为何有偏移?
  • 国际经纬度坐标标准为WGS84,国内必须至少使用国测局制定的GCJ02坐标系对地理位置进行首次加密。百度坐标在此基础上,进行了二次加密措施,进一步保护了个人隐私
  1. 应用快速集成百度地图SDK步骤

2. 百度地图SDK更新日志

2021

02.02 v7.2.0

【新增】

  • 新增批量删除overlay接口。BaiduMap -> removeOverLays(List overlays);

【修复】

  • 1、修复自定义指南针图标不生效问题。
  • 2、修复自定义热力图清除缓存不生效问题。
  • 3、修复步骑行导航震动提示引起的crash。
  • 4、修复其他已知问题。

2020

02.13 v6.2.0

【新增】

  • 1、驾车路线规划增加收费字段: toll。
  • 2、新增绘制Polyline时, 是否需要对坐标点进行抽稀的接口 -> isThined(boolean isThined)。
  • 3、步骑行导航新增获取导航底图的接口 -> getNaviMap()。
  • 4、BitmapDescriptor增加清除缓存接口 -> clearCache()。

【修复】

  • 1、修复某些地区ipv6网络环境较差的情况下,出现的底图加载网格问题。
  • 2、修复绘制polyline时,设置纹理索引但不设置纹理列表和颜色而出现的崩溃问题。
  • 3、修复计算点到直线的垂足问题。
  • 4、修复绘制带有重复点的多纹理polyline时,部分颜色错乱的问题。
  • 5、修复已知空指针等稳定性问题。

09.10 v7.0.0

【新增】

  • 1、引擎架构升级,全面提升底图渲染效果和流畅度。
  • 2、检索组件新增推荐上车点服务。
  • 3、检索组件新增天气查询服务。
  • 4、polyline绘制增加自定义拐角样式。
  • 5、适配Android11 Beta版本。

【修复】

  • 1、修复地图释放偶现的ANR问题。
  • 2、修复添加或更新覆盖物和地图释放异步时偶现的crash问题。
  • 3、修复其他已知问题。

2019

03.15 v5.3.0

  • 新增室内导航
  • 新增根据densityDpi构造BitmapDescriptor的接口,主要用于创建Marker,InfoWindow等Overlay的纹理图片
  • 优化步骑行导航效果
  • 优化多地图场景下的地图内存管理
  • 优化室内图展示效果

08.03 v5.4.4

  • 优化绘制性能、优化内存

2018

2018.03

  • 修复连续定位扫描不到WIFI时出现Crash的问题

2017

2017.02

  • 新增移动热点判断功能,涉及接口:LocationClient.requestHotSpotState()
  • LocationClient增加独立线程,修复异常情况下造成的ANR

2017.08

  • 优化精准室内定位环境下,连续定位结果平滑性
  • 优化调整发起定位请求为子线程,接收定位结果回调为主线程
  • 新增Abstract类型的监听接口BDAbstractLocationListener,用于实现定位监听,原有BDLocationListener暂时保留,推荐开发者升级到Abstract类型的新监听接口使用
  • 在BDAbstractLocationListener中新增onLocDiagnosticMessage方法,用于获取定位错误返回码等信息。具体错误码及说明,请参加类参考中的说明
  • 在LocationClientOption中新增setWifiCacheTimeOut(int time)方法,用于设置WIFI有效期。如果开发者设置了这个接口,首次启动定位时,会先判断当前WIFI是否超出有效期,超出有效期的话,会先重新扫描WIFI,然后再定位,WIFI扫描大概需要1-2s的时间。本功能更适合于对首次定位精度要求高、对速度无要求的开发者
  • 在BDLocation类中新增getLocationID()方法,用于获取定位唯一标识,这个标识只与定位本身相关。当开发者遇到定位问题时,可将这个唯一标识、出现问题时间及问题描述信息发送至loc-bugs@baidu.com邮件组,我们会有专人支持解决

2017.12

  • 优化精准室内定位环境下,连续定位结果平滑性。注意:使用带有室内精准定位的SDK版本时,需增加集成库文件libindoor.so
  • 优化JNI代码,so库文件升级为liblocSDK7b.so
  • 新增适配Android 8.0系统后台连续定位,在LocationClient类中新增方法enableLocInForeground(),用于开启前台定位模式,避免因App退后台时,系统影响正常定位
  • 在基础定位模块中,类BDAbstractLocationListener中新增onLocDiagnosticMessage方法,用于回调定位问题诊断信息
  • 在BDLocation类中新增getAdCode()方法,用于获取行政区划代码
  • 新增辅助H5定位,在LocationClient类中新增方法enableAssistantLocation()方法,调用该方法启动H5辅助定位功能。结合JS API中的定位功能使用,可使JS API中的定位效果更佳

2016

  • 2016.01 新增位置自动提醒功能
  • 2016.03 修复Google Play检测到的https证书漏洞问题,全球定位服务全新升级
  • 2016.08
    • 按照功能不同,将原有SDK分为如下四种:基础定位,离线定位,室内定位,全量定位
    • 加入国内外判断接口,涉及接口为:BDLocation.getLocationWhere()
    • 加入网络定位返回海拔功能,涉及接口为:BDLocation.getAltitude()
    • 加入室内外判断接口,涉及接口为:BDLocation.getUserIndoorState()
    • 加入GPS质量判断接口,涉及接口为:BDLocation.getGpsAccuracyStatus()

2015

  • 2015.04
    • 优化初次定位速度,开启wifi时,平均首次定位时间达137ms,比竞品快57%
    • 优化国外定位速度
  • 2015.05
    • BDLocation新增接口getcountry(),getCountryCode()接口
    • 修复连续GPS定位时偶尔返回网络定位结果的问题
    • 优化首次定位连续返回多个结果问题
  • 2015.07
    • 新版离线定位功能,速度精度全面升级
    • 新增位置语义化/POI功能
    • 国外定位地址信息为空问题
    • 国际化定位cdma手机不能定位成功
  • 2015.8 适配Android M版本
  • 2015.10 国外定位某些情况城市返回为空

2014

  • 2014.02
    • 根据传感器信息获取方向信息功能
    • 根据网络请求判断运营商属性功能
    • 优化定位模式,修改之前GPS和网络定位优先模式为高精度定位模式,低功耗定位模式,仅用设备定位模式三种新模式
  • 2014.06
    • 升级地理围栏功能,增加地理围栏离开判断功能
    • 缩减定位SDK开发包大小
  • 2014.12
    • 新增国外(全球)定位能力开放,直接替换开发包无需修改代码
    • Android L 适配优化
    • 修复GPS定位方式未返回地址的问题

2013

  • 2013.02 优化定位性能,提高网络定位精度
  • 2013.08
    • 新增地理围栏服务
    • 定位SDK加入key验证机制

2012

  • 2012.05 初始化成功后,会立即进行一次定位,无论使用定时定位模式还是一次定位模式。即在service启动后,会立即进行定位,并调用BDLocationListener进行通知。修复了之前少数情况下坐标以及时间戳不准确的问题
  • 2012.09 新增省/市/区分级地理信息查询功能
  • 2012.12
    • 新增离线定位功能:离线状态请求定位将返回缓存基站定位结果;
    • 定位结果新增“是否需要地址信息”设置,默认返回结果无地址信息,从而节省流量
    • 定位SDK架构升级各个app单独用自己的定位service,避免各个app共用1个servcie出现的权限问题

2011

  • 2011.08 Android定位SDK正式上线,实现基础定位能力
  • 2011.11 增加超时限制,超过15秒,在onReceiveListener中接收到的串是"InternetException",而不是json串
参考
  1. SHA1的获取方法
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
### 回答1: Android Flutter 是一种用于开发移动应用程序(包括 Android 和 iOS)的开源框架。它使用 Dart 语言开发,提供了一种快速、灵活和高效的方法来创建应用程序。Flutter 具有卓越的跨平台性能和丰富的组件库,使开发者能够创建具有良好用户体验的应用程序。 ### 回答2: Android Flutter 是一个跨平台的移动应用开发框架,由谷歌开发并开源。它能够帮助开发者快速构建高性能、美观且功能丰富的移动应用。 首先,Android Flutter 使用的是Dart语言,这是一种由谷歌创建的现代编程语言。Dart具有简洁明了的语法,易于学习和使用。同时,Dart还支持JIT(即时编译)和AOT(提前编译)两种编译方式,可以提供更快速、更高效的移动应用性能。 其次,Android Flutter 采用了响应式编程模式,这使得开发者可以更方便地构建用户界面。通过使用Flutter提供的丰富的UI组件和布局结构,开发者可以快速实现应用的各个页面和交互效果。 此外,Android Flutter 还提供了强大的跨平台能力。开发者可以使用相同的代码库来构建Android和iOS的应用,节省了开发时间和成本。同时,Flutter对各种屏幕大小和设备方向的适应能力也非常好,可以在不同设备上提供一致的用户体验。 最后,Android Flutter 还具备丰富的工具和生态系统支持。谷歌提供了Android Studio插件,方便开发者进行代码编辑、调试和测试等工作。同时,Flutter还有一个活跃的开发者社区,开发者可以从中获取各种教程、插件和示例代码。 总之,Android Flutter 是一个强大而灵活的移动应用开发框架,通过使用Flutter,开发者可以更快速、更高效地构建出色的移动应用。 ### 回答3: Android Flutter是一种跨平台移动应用开发框架,它由谷歌开发并开源提供。这个框架结合了Android操作系统和Flutter UI框架的优势,使开发者能够在Android上快速构建高性能、美观的移动应用程序。 Android Flutter具有以下几个特点: 1. 跨平台开发:Flutter使用一套代码库,可以同时在Android和iOS平台上运行,减少了开发和维护两个不同平台应用的工作量。开发者只需编写一次代码,就可以在多个平台上进行部署,提高了开发效率。 2. 自绘UI:Flutter使用自己的UI框架,不依赖于操作系统提供的原生UI控件,可以实现自定义UI界面。这种自绘UI的方式能够实现更高的灵活性和扩展性,同时也提供了更好的性能和用户体验。 3. 响应式编程模式:Flutter使用响应式编程模式,通过状态管理机制实现UI与数据的双向绑定。这种机制使得开发者可以更方便地处理用户交互和数据更新,并实现动态的UI变化。 4. 快速热重载:Flutter提供了快速热重载功能,可以在开发过程中实时预览界面效果,减少了开发调试的时间。开发者可以即时修改代码并立即看到结果,提高了开发效率。 总之,Android Flutter是一种强大的移动应用开发框架,具有跨平台开发、自绘UI、响应式编程和快速热重载等特点。它能够帮助开发者快速构建高性能、美观的移动应用程序,并提高开发效率。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

初心一点

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值