123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518 |
- var pk_works_main;
- var mapModalEl;
- var _user_view_uuid;
- var _name;
- var _userList;
- var plugins_init_function = new Array();//接收显示时的init方法
- //krpano loadcomplete调用
- function showPanoBtns(sceneCount) {
- if (sceneCount > 1) {
- $(".vrshow_container_3_min .img_desc_container_min:eq(0)").show();
- } else {
- $(".vrshow_container_3_min .img_desc_container_min:eq(0)").hide();
- }
- $("#panoBtns").show();
- }
- function fullscreen(el) {
- //krpano.call("switch(fullscreen);");
- //launchFullScreen(document.documentElement);
- if ($(el).hasClass('btn_fullscreen')) {
- launchFullScreen(document.getElementById('fullscreenid'));
- var krpano = document.getElementById('krpanoSWFObject');
- krpano.call("skin_showthumbs(false);");
- } else {
- exitFullscreen();
- }
- toggleFullscreenBtn(el);
- }
- function launchFullScreen(element) {
- if (element.requestFullscreen) {
- element.requestFullscreen();
- } else if (element.mozRequestFullScreen) {
- element.mozRequestFullScreen();
- } else if (element.webkitRequestFullscreen) {
- element.webkitRequestFullscreen();
- } else if (element.msRequestFullscreen) {
- element.msRequestFullscreen();
- }
- }
- function exitFullscreen() {
- if (document.exitFullscreen) {
- document.exitFullscreen();
- }
- else if (document.mozCancelFullScreen) {
- document.mozCancelFullScreen();
- }
- else if (document.webkitCancelFullScreen) {
- document.webkitCancelFullScreen();
- }
- else if (document.msExitFullscreen) {
- document.msExitFullscreen();
- }
- }
- function toggleFullscreenBtn(el) {
- if ($(el).hasClass("btn_fullscreen")) {
- $(el).removeClass("btn_fullscreen");
- $(el).addClass("btn_fullscreen_off");
- } else {
- $(el).removeClass("btn_fullscreen_off");
- $(el).addClass("btn_fullscreen");
- }
- }
- function toggleBtns(flag) {
- if (flag) {
- $("#panoBtns").show();
- } else {
- $("#panoBtns").hide();
- var krpano = document.getElementById('krpanoSWFObject');
- krpano.call('skin_showthumbs(false);');
- }
- }
- function showWebVR() {
- var krpano = document.getElementById('krpanoSWFObject');
- var webvr = krpano.get("webvr");
- webvr.entervr();
- }
- function showthumbs() {
- var krpano = document.getElementById('krpanoSWFObject');
- krpano.call("skin_showthumbs();");
- }
- function hidePictext() {
- $('#pictextModal').modal('hide');
- toggleBtns(true);
- }
- function showPictext(title, content) {
- toggleBtns(false);
- //var data = $("body").data("panoData");
- // $('#pictextWorkName').text('');
- // $('#pictextContent').text('');
- $('#pictextWorkName').text(title);
- $('#pictextContent').html(imgtext_decode(content));
- //$('#pictextContent').append(content);
- $('#pictextModal').modal("show");
- }
- //krpano调用 初始化高级设置
- function initAdvancedSetting(sceneName) {
- //initViewSetting(sceneName);
- initEffectSetting(sceneName);
- initHotspotSetting(sceneName);
- initSandTableSetting(sceneName);
- initTourGuideSetting(sceneName);
- //作者信息 TODO
- // initAuthourInfo(sceneName);
- }
- function initTourGuideSetting(sceneName) {
- var krpano = document.getElementById('krpanoSWFObject');
- var tourGuideObj = $("body").data("panoData").tour_guide;
- if (tourGuideObj.points.length > 0) {
- $('#pano .vrshow_tour_btn').show();
- } else {
- $('#pano .vrshow_tour_btn').hide();
- }
- }
- var lsTourGuideObj = null;
- function startTourGuide() {
- toggleBtns(false);
- lsTourGuideObj = $("body").data("panoData").tour_guide;
- var krpano = document.getElementById('krpanoSWFObject');
- //krpano.call('showlog(true)');
- var curSceneName = krpano.get('xml.scene');
- var firstPoint = lsTourGuideObj.points[0];
- if (lsTourGuideObj.useStartImg) {
- krpano.call('show_tour_guide_alert(' + lsTourGuideObj.startImgUrl + ');');
- }
- if (this.sceneName != curSceneName) {
- krpano.call('loadscene(' + firstPoint.sceneName + ', null, MERGE);');
- }
- var curfov = krpano.get('view.fov');
- krpano.call('lookto(' + firstPoint.ath + ',' + firstPoint.atv + ',' + curfov + ',smooth(720,-720,720),true,true,js(looktoCallBack(' + 1 + ')));');
- }
- function looktoCallBack(idx) {
- var krpano = document.getElementById('krpanoSWFObject');
- if (idx < lsTourGuideObj.points.length) {
- var pointObj = lsTourGuideObj.points[idx];
- var curSceneName = krpano.get('xml.scene');
- var curfov = krpano.get('view.fov');
- if (pointObj.sceneName != curSceneName) {
- krpano.call('loadscene(' + pointObj.sceneName + ', null, MERGE);');
- krpano.call('lookto(' + pointObj.ath + ',' + pointObj.atv + ',' + curfov + ',smooth(720,-720,720),true,true,js(looktoCallBack(' + (parseInt(idx) + 1) + ')));');
- } else {
- krpano.call('lookto(' + pointObj.ath + ',' + pointObj.atv + ',' + curfov + ',tween(easeInOutQuad,' + parseInt(pointObj.moveTime) + '),true,true,js(looktoCallBack(' + (parseInt(idx) + 1) + ')));');
- }
- } else {
- if (lsTourGuideObj.useEndImg) {
- krpano.call('show_tour_guide_alert(' + lsTourGuideObj.endImgUrl + ');');
- }
- toggleBtns(true);
- }
- }
- function initSandTableSetting(sceneName) {
- var krpano = document.getElementById('krpanoSWFObject');
- var sandTableObj = $("body").data("panoData").sand_table;
- var existFlag = false;
- $(sandTableObj.sandTables).each(function (idx) {
- if (this.sceneOpt[sceneName]) {
- //设置背景图片
- krpano.set("layer[map].url", this.imgPath);
- $.each(this.sceneOpt, function (sceneName, value) {
- var spotName = 'spot_' + sceneName;
- addRadarSpot(spotName, value.krpLeft, value.krpTop);
- });
- var hlookatIncre = krpano.get('view.hlookat') - this.sceneOpt[sceneName].hlookat;
- krpano.call('activatespot(' + (parseFloat(this.sceneOpt[sceneName].rotate) + parseFloat(hlookatIncre)) + ');');
- existFlag = true;
- return false;
- }
- });
- if (!existFlag) {
- $('.vrshow_radar_btn').hide();
- krpano.set('layer[mapcontainer].visible', false);
- } else {
- $('.vrshow_radar_btn').show();
- if (sandTableObj.isOpen) {
- krpano.set('layer[mapcontainer].visible', true);
- }
- }
- }
- function toggleKrpSandTable() {
- var krpano = document.getElementById('krpanoSWFObject');
- var isVisible = krpano.get('layer[mapcontainer].visible');
- if (isVisible) {
- krpano.set('layer[mapcontainer].visible', false);
- } else {
- krpano.set('layer[mapcontainer].visible', true);
- }
- }
- function addRadarSpot(name, x, y) {
- //console.log(x+','+y);
- var krpano = document.getElementById('krpanoSWFObject');
- krpano.call('addlayer(' + name + ');');
- krpano.set('layer[' + name + '].style', 'spot');
- krpano.set('layer[' + name + '].x', x);
- krpano.set('layer[' + name + '].y', y);
- krpano.set('layer[' + name + '].parent', 'radarmask');
- krpano.call('layer[' + name + '].loadstyle(spot);');
- //krpano.set('layer['+name+'].keep','true');
- //krpano.set('layer['+name+'].visible','true');
- }
- function initHotspotSetting(sceneName) {
- var krpano = document.getElementById('krpanoSWFObject');
- var hotspotObj = ($("body").data("panoData").hotspot)[sceneName];
- if (hotspotObj) {
- $.each(hotspotObj, function (key, value) {
- if (key == 'scene') {
- $(value).each(function (idx) {
- krpano.call('addSceneChangeHotSpot("' + this.imgPath + '","' + (this.name) + '",' + this.linkedscene + ',' + (this.ath) + ',' + (this.atv) + ',' + this.isDynamic + ',false,true)');
- });
- } else if (key == 'link') {
- $(value).each(function (idx) {
- krpano.call('addLinkHotSpot("' + this.imgPath + '","' + (this.name) + '",' + html_encode(this.hotspotTitle) + ',' + (this.ath) + ',' + (this.atv) + ',' + this.isDynamic + ',false,true,' + this.link + ',' + this.isShowSpotName + ')');
- });
- } else if (key == 'image') {
- $(value).each(function (idx) {
- krpano.call('addImgHotSpot("' + this.imgPath + '","' + (this.name) + '",' + html_encode(this.hotspotTitle) + ',' + (this.ath) + ',' + (this.atv) + ',' + this.isDynamic + ',false,true,' + this.galleryName + ',' + this.isShowSpotName + ')');
- });
- } else if (key == 'text') {
- $(value).each(function (idx) {
- krpano.call('addWordHotSpot("' + this.imgPath + '","' + (this.name) + '",' + html_encode(this.hotspotTitle) + ',' + (this.ath) + ',' + (this.atv) + ',' + this.isDynamic + ',false,true,' + html_encode(this.wordContent) + ',' + this.isShowSpotName + ')');
- });
- } else if (key == 'voice') {
- $(value).each(function (idx) {
- krpano.call('addVoiceHotSpot("' + this.imgPath + '","' + (this.name) + '",' + html_encode(this.hotspotTitle) + ',' + (this.ath) + ',' + (this.atv) + ',' + this.isDynamic + ',false,true,' + this.musicSrc + ',' + this.isShowSpotName + ')');
- });
- } else if (key == 'around') {
- $(value).each(function (idx) {
- krpano.call('addAroundHotSpot("' + this.imgPath + '","' + (this.name) + '",' + html_encode(this.hotspotTitle) + ',' + (this.ath) + ',' + (this.atv) + ',' + this.isDynamic + ',false,true,' + this.aroundPath + ',' + this.fileCount + ',' + this.isShowSpotName + ')');
- });
- } else if (key == 'imgtext') {
- $(value).each(function (idx) {
- krpano.call('addImgTextHotSpot("' + this.imgPath + '","' + (this.name) + '",' + html_encode(this.hotspotTitle) + ',' + (this.ath) + ',' + (this.atv) + ',' + this.isDynamic + ',false,true,' + imgtext_encode(this.imgtext_wordContent) + ',' + this.isShowSpotName + ')');
- });
- } else if (key == 'obj') {
- $(value).each(function (idx) {
- krpano.call('addObjHotSpot("' + this.imgPath + '","' + (this.name) + '",' + html_encode(this.hotspotTitle) + ',' + (this.ath) + ',' + (this.atv) + ',' + this.isDynamic + ',false,true,' + this.objid + ',' + this.isShowSpotName + ')');
- });
- } else if (key == 'video') {
- $(value).each(function (idx) {
- krpano.call('addVideoHotSpot("' + this.imgPath + '","' + (this.name) + '",' + html_encode(this.hotspotTitle) + ',' + (this.ath) + ',' + (this.atv) + ',' + this.isDynamic + ',false,true,' + this.location + ',' + this.isShowSpotName + ')');
- });
- }
- });
- }
- }
- function initEffectSetting(sceneName) {
- var krpano = document.getElementById('krpanoSWFObject');
- var effectObj = null;
- var effectData = $("body").data("panoData").special_effects;
- $(effectData.effectSettings).each(function (idx) {
- if (this.sceneName == sceneName) {
- effectObj = this;
- return false;
- }
- });
- if (effectObj) {
- if (effectObj.isOpen) {
- if (effectObj.effectType == 'sunshine') {
- //krpano.set('lensflares[obj].item[lensitemobj].scene',sceneName);
- //krpano.set('lensflares[obj].item[lensitemobj].ath',effectObj.ath);
- //krpano.set('lensflares[obj].item[lensitemobj].atv',effectObj.atv);
- krpano.call('addLensflares(' + effectObj.ath + ',' + effectObj.atv + ')');
- } else {
- krpano.call('addEffect("' + effectObj.effectType + '","' + effectObj.effectImgPath + '")');
- }
- }
- }
- }
- function littlePlaneOpen(sceneName) {
- var krpano = document.getElementById('krpanoSWFObject');
- var lookatObj = null;
- var angleData = $("body").data("panoData").angle_of_view;
- $(angleData.viewSettings).each(function (idx) {
- if (this.sceneName == sceneName) {
- lookatObj = this;
- return false;
- }
- });
- if (lookatObj) {
- krpano.set('view.vlookat', lookatObj.vlookat);
- krpano.set('view.hlookat', lookatObj.hlookat);
- krpano.set('view.fov', lookatObj.fov);
- krpano.set('view.fovmax', lookatObj.fovmax);
- if (lookatObj.hlookatmin) {
- krpano.set('view.hlookatmin', lookatObj.hlookatmin);
- }
- if (lookatObj.hlookatmax) {
- krpano.set('view.hlookatmax', lookatObj.hlookatmax);
- }
- krpano.call('skin_setup_littleplanetintro(' + lookatObj.fovmin + ',' + (-1 * lookatObj.vlookatmax) + ',' + (-1 * lookatObj.vlookatmin) + ',' + (lookatObj.keepView ? "off" : "0.0") + ');');
- } else {
- krpano.call('skin_setup_littleplanetintro(5,-90,90,"0.0");');
- }
- }
- //场景载入时加载视角设置
- function initViewSetting(sceneName) {
- var krpano = document.getElementById('krpanoSWFObject');
- var lookatObj = null;
- var angleData = $("body").data("panoData").angle_of_view;
- $(angleData.viewSettings).each(function (idx) {
- if (this.sceneName == sceneName) {
- lookatObj = this;
- return false;
- }
- });
- if (lookatObj) {
- krpano.set('view.vlookat', lookatObj.vlookat);
- krpano.set('view.hlookat', lookatObj.hlookat);
- krpano.set('view.fov', lookatObj.fov);
- krpano.set('view.fovmin', lookatObj.fovmin);
- krpano.set('view.fovmax', lookatObj.fovmax);
- krpano.set('view.vlookatmin', -1 * lookatObj.vlookatmax);
- krpano.set('view.vlookatmax', -1 * lookatObj.vlookatmin);
- krpano.set('autorotate.horizon', lookatObj.keepView ? "off" : "0.0");
- if (lookatObj.hlookatmin) {
- krpano.set('view.hlookatmin', lookatObj.hlookatmin);
- }
- if (lookatObj.hlookatmax) {
- krpano.set('view.hlookatmax', lookatObj.hlookatmax);
- }
- }
- }
- function loadGallery() {
- var krpano = document.getElementById('krpanoSWFObject');
- var hotspotObj = $("body").data("panoData").hotspot;
- //var xmlStr = '';
- $.each(hotspotObj, function (sceneName, value) {
- if (value) {
- $(value.image).each(function (idx) {
- var xmlStr = '<gallery name="' + this.galleryName + '" title="">';
- $(this.imgs).each(function (idx) {
- xmlStr += '<img name="img' + idx + '" url="' + this.src + '" title="" />';
- });
- xmlStr += '</gallery>';
- krpano.call('loadxml(' + xmlStr + ');');
- });
- }
- });
- }
- function reloadGallery(gallery) {
- var krpano = document.getElementById('krpanoSWFObject');
- var ua = window.navigator.userAgent.toLowerCase();
- if (typeof (wx) != 'undefined' && ua.match(/MicroMessenger/i) == 'micromessenger') {
- //整合gallery的图片到数组
- var urls = new Array();
- for (var i = 0; i < krpano.get('gallery[' + gallery + '].img.count'); i++) {
- urls.push(krpano.get('gallery[' + gallery + '].img[' + i + '].url'));
- }
- wx.previewImage({
- current: krpano.get('gallery[' + gallery + '].img[0].url'), // 当前显示图片的http链接
- urls: urls // 需要预览的图片http链接列表
- });
- }
- else {
- toggleBtns();
- krpano.call('show_gallery(' + gallery + ')');
- }
- }
- function getWorkPrivacyFlag() {
- var privacy_flag = '0';
- return privacy_flag;
- }
- function initPano() {
- //TODO
- if (data.pk_works_main == undefined) {
- window.location.href = '/404.html';
- return;
- }
- //微信分享
- // initWxConfig(data);
- // initQQShare(data);
- //存储作者的信息
- // _user_view_uuid = data.user_view_uuid;
- _user_view_uuid = "admin";
- _name = data.name;
- document.title = _name;
- //$("#thumb_img").attr("src",data.absolutelocation);
- //var descContent='';
- //if(data.profile){
- // descContent = data.profile;
- //}else{
- // descContent = data.name;
- //}
- //$("head").append('<meta name="description" content="'+descContent+'"/>');
- $("body").data("panoData", data);
- pk_works_main = data.pk_works_main;
- var settings = {};
- settings["events[skin_events].onloadcomplete"] = "skin_showloading(false);";
- settings["onstart"] = '';
- //是否开始时弹出场景选择
- if (data.scenechoose == '1') {
- settings["events[skin_events].onloadcomplete"] += "open_show_scene_thumb();";
- }
- //统计人气
- if (data.browsing_num != '0') {
- $("#user_viewNum").text(parseInt(data.browsing_num) + 1);
- } else {
- $("#user_viewNum").text("1");
- }
- //启动画面
- var loadingObj = data.loading_img;
- if (loadingObj && loadingObj.useLoading) {
- settings["onstart"] += "showloadingimg('" + loadingObj.loadingImgPathWebsite + "','" + loadingObj.loadingImgPathMobile + "');";
- }
- for (var i = 0; i < plugins_init_function.length; i++) {
- plugins_init_function[i](data, settings);
- }
- if (data.scene_group.sceneGroups.length > 0) {
- $(".vrshow_container_3_min .img_desc_container_min:eq(0) img").attr('src', data.scene_group.sceneGroups[0].imgPath);
- }
- settings['skin_settings.littleplanetintro'] = data.littleplanet == "1" ? true : false;
- settings['autorotate.enabled'] = data.autorotate == "1" ? true : false;
- embedpano({
- swf: "tour.swf",
- xml: "tour.xml",
- target: "pano",
- html5: 'prefer',
- //flash:'only',
- wmode: 'opaque-flash',
- mobilescale: 1,
- vars: settings
- });
- }
- function html_encode(str) {
- var s = "";
- if (str.length == 0) return "";
- s = str.replace(/\'/g, "'");
- s = s.replace(/\"/g, """);
- s = s.replace(/\(/g, "(");
- s = s.replace(/\)/g, ")");
- s = s.replace(/,/g, ",");
- return s;
- }
- function imgtext_encode(str) {
- var s = "";
- if (str.length == 0) return "";
- s = str.replace(/\'/g, "'");
- s = s.replace(/\"/g, """);
- s = s.replace(/\(/g, "(");
- s = s.replace(/\)/g, ")");
- s = s.replace(/\,/g, "%2C");
- return s;
- }
- function imgtext_decode(str) {
- var s = "";
- if (str.length == 0) return "";
- s = str.replace(/"/g, "\"");
- s = s.replace(/%2C/g, ",");
- return s;
- }
- function showFullscreenBtn() {
- $(".btn_fullscreen").show();
- }
- function radarRotate(sceneName, hlookat) {
- }
- function openSpeechVoiceBtn() {
- var voiceOff = $('.btn_music_off');
- voiceOff.removeClass('btn_music_off');
- voiceOff.addClass('btn_music');
- }
- var player;
- function playvideo(url) {
- var location = window.location.href;
- url = location.substring(0, location.lastIndexOf("\/") + 1) + url;
- player = new prismplayer({
- id: "J_prismPlayer", // 容器id
- source: url,
- autoplay: true, // 自动播放
- width: "100%", // 播放器宽度
- height: "400px" // 播放器高度
- });
- $("#video_player_modal").modal('show');
- }
- function close_video_player() {
- player.pause();
- $("#video_player_modal").modal('hide');
- }
|