dong-frank的博客

百度Android全景地图API调用

字数统计: 812阅读时长: 3 min
2024/06/23

百度Android全景地图API调用

官方文档中有些不清楚的地方,照着官方文档可能会出现API鉴权失败,app闪退等情况
本博客结合自己的开发经历分享一些有用的经验

具体步骤

  1. 百度地图开发者平台申请Android全景地图API
    注意:Android全景地图API为高级服务,需要工单联系客服开通,一般按照客服要求的填一填就可以了,还挺容易,客服态度也很好,点赞!
  2. 下载全景SDK
    勾选自己需要的功能下载就可以了
    建议选择aar包下载
  3. 添加依赖
    1. 将压缩包中的BaiduPanoSdk.aar文件拷贝到项目android\app\libs目录下.根据自己需要添加其他依赖
    2. android\app\build.gradle.kts文件中的dependencies代码块中添加

implementation(files("libs/BaiduPanoSdk.aar"))
1. 点击Sync now

  1. 验证是否添加成功
    在MainActivity中尝试import com.baidu.lbsapi.panoramaview.PanoramaView
    不报错恭喜添加依赖成功!

  2. android\app\src\main\AndroidManifest.xml中填写你自己的key

    1
    2
    3
    <meta-data
    android:name="com.baidu.lbsapi.API_KEY"
    android:value="你的key" />
  3. 在相应的布局文件中添加全景图片容器

    1
    2
    3
    4
    5
    6
    7
    8
    <com.baidu.lbsapi.panoramaview.PanoramaView
    android:id="@+id/panorama"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:contentDescription="这是一个全景图片"
    android:layout_marginTop="100dp"
    android:layout_below="@+id/title"
    />

    参数可自行调整

  4. 在Activity中初始化和引用容器

    1
    2
    private var mPanaView: PanoramaView? = null
    mPanaView = findViewById<View>(R.id.panorama) as PanoramaView
  5. 初始化全景显示

    1
    2
    3
    4
    val intent = intent
    if (intent != null) {
    startPanoView(intent.getIntExtra("type", -1))
    }
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    private fun startPanoView(type : Int) {
    mPanaView?.setShowTopoLink(!mode)
    // 测试回调函数,需要注意的是回调函数要在setPanorama()之前调用,否则回调函数可能执行异常
    mPanaView?.setPanoramaViewListener(object : PanoramaViewListener {
    override fun onLoadPanoramaBegin() {
    Log.i(toString(), "onLoadPanoramaStart...")
    }

    override fun onLoadPanoramaEnd() {
    Log.i(toString(), "onLoadPanoramaEnd...")
    }

    override fun onLoadPanoramaError(error: String) {
    Log.i(
    toString(),
    "onLoadPanoramaError : $error"
    )
    //TODO:提示错误
    }
    //自行查阅文档
    override fun onDescriptionLoadEnd(json: String) {}
    override fun onMessage(msgName: String, msgType: Int) {}
    override fun onCustomMarkerClick(key: String) {}
    override fun onMoveStart() {}
    override fun onMoveEnd() {}
    })
    mPanaView?.setPanoramaImageLevel(PanoramaView.ImageDefinition.ImageDefinitionHigh) //设置图片显示清晰度
    }
  6. 设置全景图片
    有多种设置方式,这里以pid为例

    1
    mPanaView?.setPanorama("09002500121709071035569301I") //关于图片的坐标参加官方文档

    如果成功将看到南京大学汉口路校门

可能出现问题

  1. 加载黑屏出现API未认证字样
    • 检查开发者平台中的SHA1码是否填写正确,注意开发版(debug)和发布版(release)不要填反
    • 具体获取方式Being搜索
    • 切换为真机调试运行
    • 检查key是否填写正确
    • 检查是否添加允许app连接网络
  2. 进入加载全景的界面闪退
    • 未设置隐私政策同意Being搜索解决
  3. 未显示全景图片
    • 检查全景图片的pid是否错误

总结

  1. 百度Android全景API的官方文档写得不是很清楚,最关键的startPanoView方法都没提到
  2. 可以参考本博客教材
  3. 也可以下载官网的demo演示,其中有较完整的代码
  4. 也可以查看我的Github仓库的源码
CATALOG
  1. 1. 百度Android全景地图API调用
    1. 1.1. 具体步骤
    2. 1.2. 可能出现问题
    3. 1.3. 总结