全景图,自定义热点示例
// 构造配置参数,分别设置场景资源,id, 场景类型,场景名称,fov值,fov范围,仰角(pitch)范围
var configuration = new Hydreigon.PanoConfiguration({
resource_type: 'pano', // 场景类型,与materialType保持一致
render_type: 'cube-multi', // 渲染类型
resource: { // 资源链接
source: {
tile_path: "https://bj.bcebos.com/v1/repos3d/penglai/pano_packages/pack_pano_default_07/pieces/panos/input.tiles/",
tile_file: "panos/input.tiles/%s/l%l/%v/l%l_%s_%v_%h.jpg",
tile_size: [
512,
1152,
2304,
4608
]
}
}
}).setId('scene-01').setSceneType('pano').setSceneName('Cool').setFov(70).setFovRange([1, 179]).setPitchRange([-90, 90]);
var PanoViewer = Hydreigon.PanoViewer;
var container = document.getElementById("container");
var config = {debugLayer: false};
var renderer = Hydreigon.RenderManager.create(container);
container.appendChild(renderer.canvas);
var ak = '您的AccessKey';
var sk = '您的SecretKey';
var panoViewer = new PanoViewer(container, ak, sk, config);
panoViewer.init(configuration).then(addHotspot);
panoViewer.addEventListener('scene-loaded', () => {
panoViewer.enablePointEvent(true);
panoViewer.switchGyro(false);
hs.show();
});
let hs; // 热点
function addHotspot() {
const hotspot = {
id: 'hotspot_1',
name: '自定义热点',
pos: { // 当type为Label是pos可缺省,代表当前视角正前方添加一个标准的hotspot
x: 0,
y: 0,
z: -50
},
};
let dom = document.createElement('div');
dom.classList.add('pano-hotspot-container');
const text = document.createElement('div');
text.textContent = hotspot.name;
dom.appendChild(text);
dom.onclick = () => { alert(`点击了${hotspot.name}`)};
hs = new Hydreigon.CHotspotDom(panoViewer.getHsManager(), dom, hotspot);
};
function update(){
renderer.render();
hs?.update?.();
}
// render
renderer.setCurrentViewer(panoViewer);
Hydreigon.RafManager.add(update);