百度Android全景地图API调用
官方文档中有些不清楚的地方,照着官方文档可能会出现API鉴权失败,app闪退等情况
本博客结合自己的开发经历分享一些有用的经验
具体步骤
- 在百度地图开发者平台申请Android全景地图API
注意:Android全景地图API为高级服务,需要工单联系客服开通,一般按照客服要求的填一填就可以了,还挺容易,客服态度也很好,点赞! - 下载全景SDK
勾选自己需要的功能下载就可以了
建议选择aar包下载 - 添加依赖
- 将压缩包中的
BaiduPanoSdk.aar
文件拷贝到项目android\app\libs
目录下.根据自己需要添加其他依赖 - 在
android\app\build.gradle.kts
文件中的dependencies
代码块中添加
- 将压缩包中的
implementation(files("libs/BaiduPanoSdk.aar"))
1. 点击Sync now
验证是否添加成功
在MainActivity中尝试import com.baidu.lbsapi.panoramaview.PanoramaView
不报错恭喜添加依赖成功!在
android\app\src\main\AndroidManifest.xml
中填写你自己的key1
2
3<meta-data
android:name="com.baidu.lbsapi.API_KEY"
android:value="你的key" />在相应的布局文件中添加全景图片容器
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"
/>参数可自行调整
在Activity中初始化和引用容器
1
2private var mPanaView: PanoramaView? = null
mPanaView = findViewById<View>(R.id.panorama) as PanoramaView初始化全景显示
1
2
3
4val 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
28private 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) //设置图片显示清晰度
}设置全景图片
有多种设置方式,这里以pid为例1
mPanaView?.setPanorama("09002500121709071035569301I") //关于图片的坐标参加官方文档
如果成功将看到南京大学汉口路校门
可能出现问题
- 加载黑屏出现API未认证字样
- 检查开发者平台中的SHA1码是否填写正确,注意开发版(debug)和发布版(release)不要填反
- 具体获取方式Being搜索
- 切换为真机调试运行
- 检查key是否填写正确
- 检查是否添加允许app连接网络
- 进入加载全景的界面闪退
- 未设置隐私政策同意Being搜索解决
- 未显示全景图片
- 检查全景图片的pid是否错误
总结
- 百度Android全景API的官方文档写得不是很清楚,最关键的
startPanoView
方法都没提到 - 可以参考本博客教材
- 也可以下载官网的demo演示,其中有较完整的代码
- 也可以查看我的Github仓库的源码