本代码主要用于实现全景漫游效果,适用于虚拟旅游、房地产展示等场景。
该代码利用百度地图API,通过不断改变视角角度,以指定位置为中心实现全景漫游效果。
首先,需要引入百度地图API脚本和样式表:
await Promise.all([
this.loadScripts([
'https://api.map.baidu.com/api?type=subway&v=1.0&ak=cxtWZ9zGiLlLdQwBSuGGwpanwqfaLvEc&services=&t=20240319170303',
'http://api.map.baidu.com/getscript?type=webgl&v=1.0&ak=cxtWZ9zGiLlLdQwBSuGGwpanwqfaLvEc&services=&t=20240319170303',
'https://mapopen.bj.bcebos.com/github/BMapGLLib/InfoBox/src/InfoBox.js',
'https://mapopen.bj.bcebos.com/github/BMapGLLib/RichMarker/src/RichMarker.min.js',
'https://mapopen.bj.bcebos.com/github/BMapGLLib/DrawingManager/src/DrawingManager.min.js',
'https://mapopen.cdn.bcebos.com/github/BMapGLLib/DistanceTool/src/DistanceTool.min.js',
]),
this.loadStyles([
'http://api.map.baidu.com/res/webgl/10/bmap.css',
'http://mapopen.cdn.bcebos.com/github/BMapGLLib/DrawingManager/src/DrawingManager.min.css',
]),
])
使用BMapGL.Panorama
类创建全景实例,并设置全景ID:
const BMapGL = window.BMapGL
var panorama = new BMapGL.Panorama('panorama')
panorama.setId('0100010000130501122416015Z1')
通过设置pov
属性,不断改变视角角度,实现旋转效果:
var count,
heading = 0
intervalId = setInterval(function () {
count++
heading += 10
if (heading > 360) {
heading -= 360
}
panorama.setPov({ heading: heading, pitch: 0 }) //不断调整水平方向
if (count == 100) {
starttime = new Date().valueOf()
}
if (count == 600) {
endtime = new Date().valueOf()
var deltatime = endtime - starttime
clearInterval(intervalId)
}
}, 500)