рдпреИрдВрдбреЗрдХреНрд╕ рдкрд░ рдкреИрдиреЛрд░рдорд╛.рдХреЗрдЖрд░рдиреЛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП

рдХрд╛рд░реНрдп рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛: Yandex.Maps рдФрд░ рд▓реЛрдХрдкреНрд░рд┐рдп KRPano рдкреИрдиреЛрд░рдорд╛ рджрд░реНрд╢рдХ рдХреЗ рдПрдХреАрдХрд░рдг рдХреЗ рд╕рд╛рде рдЖрдиреЗ рдХреЗ рд▓рд┐рдПред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рд╣рдо рдПрдкреАрдЖрдИ рдореЗрдВ рдЪрдврд╝рддреЗ рд╣реИрдВ рдФрд░ ... рд╣рдореЗрдВ рдПрдХ рдЙрддреНрддрд░ рдорд┐рд▓рддрд╛ рд╣реИ рдХрд┐ рдЖрдк рд╡рд╛рдИред рдХрд╛рд░реНрдЯ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкреИрдиреЛрд░рдорд╛ рдирд╣реАрдВ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВред
рдЗрд╕рд╕реЗ рдХреЛрдИ рдлрд░реНрдХ рдирд╣реАрдВ рдкрдбрд╝рддрд╛, рдХреНрдпреЛрдВрдХрд┐ рд╣реЛрдордореЛрд░ рдкреИрдиреЛрд░рдорд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рд▓реЗрдХрд┐рди рдореБрдЦреНрдп рдЪреАрдЬ рдЬрд┐рд╕реЗ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рд╡рд╣ рддрдерд╛рдХрдерд┐рдд рд╣реИ рдПрдХ рд░рдбрд╛рд░ рдЬреЛ рдЗрдВрдЧрд┐рдд рдХрд░реЗрдЧрд╛ рдХрд┐ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдкреИрдиреЛрд░рдорд╛ рдХрд╣рд╛рдБ рджрд┐рдЦ рд░рд╣рд╛ рд╣реИред

рдкреИрдиреЛрд░рд╛рдорд╛рд╕ рд╡рд╛рдИ рдХрд╛рд░реНрдЯ рдХреЗ рд╕рд╛рде рд░рдбрд╛рд░

рддреЛ, рдПрдХ KRPano рджреМрд░рд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдкреИрдиреЛрд░рдорд╛ рдХреЛ рдХреБрдЫ рдорд╛рдирдХ рдЖрдЗрдХрди рдХреЗ рд╕рд╛рде рдорд╛рдирдЪрд┐рддреНрд░ рдкрд░ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдЬрдм рдЖрдк рдХреНрд▓рд┐рдХ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рдкреИрдиреЛрд░рдорд╛ рдХреЛ рд▓реЛрдб рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рдФрд░ рдЖрдЗрдХрди рдХреЛ рдПрдХ рд░рдбрд╛рд░ рдЫрд╡рд┐ (рдорд╛рдирдЪрд┐рддреНрд░ рдкрд░ рд╕рд╣реА рд░реЛрдЯреЗрд╢рди рдХреЗ рд╕рд╛рде) рдореЗрдВ рднреА рдмрджрд▓рдирд╛ рдЪрд╛рд╣рд┐рдПред рдПрдХ рдкреИрдиреЛрд░рдорд╛ рдХреЛ рджреЗрдЦрддреЗ рд╕рдордп, рд░рдбрд╛рд░ рдХреЛ рднреА рдЕрдкрдиреА рдзреБрд░реА рдХреЗ рдЪрд╛рд░реЛрдВ рдУрд░ рдШреВрдордирд╛ рдЪрд╛рд╣рд┐рдП рдХреНрдпреЛрдВрдХрд┐ рджреЗрдЦрдиреЗ рдХреЗ рдХреЛрдг рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рд╣реЛрддрд╛ рд╣реИред

рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдЬрдм onxmlcomplete рдШрдЯрдирд╛ рд╢реБрд░реВ рд╣реЛ рдЬрд╛рддреА рд╣реИ , рддреЛ рд╣рдо рдХреБрдЫ рдЬреЗрдПрд╕ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд░рддреЗ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд▓реЛрдб рдХрд┐рдпрд╛ рдЧрдпрд╛ , рдЬреЛ рд▓реЛрдб рдХрд┐рдП рдЧрдП рдкреИрдиреЛрд░рдорд╛ рдХреА рдЖрдИрдбреА рдореЗрдВ рд▓реЗ рдЬрд╛рдПрдЧрд╛:
<pano name="solar_tower_1" xmlurl="%SWFPATH%/scenes/solar_tower_1/scene.xml" pageurl="/solar_tower_1/" pagetitle="  #1" onxmlcomplete="trace(  #1 loaded); js(loaded(0))" /> 

рдпрд╣ рдХрд╛рд░реНрдп рдХреНрдпрд╛ рдХрд░реЗрдЧрд╛? рдХреБрдЫ рднреА рдЬрдЯрд┐рд▓ рдирд╣реАрдВ рд╣реИ - рдмрд╕ рдорд╛рдирдЪрд┐рддреНрд░ рдкрд░ рдЕрдВрдХ (рд╕реНрдерд╛рди рдЪрд┐рд╣реНрди) рдХрд╛ рдкреБрдирд░реНрдирд┐рд░реНрдорд╛рдг рдХрд░реЗрдВ рдФрд░ рдкреИрдиреЛрд░рдорд╛ рдХреЗ рджреЗрдЦрдиреЗ рдХреЗ рдХреЛрдг рдХреА рдЬрд╛рдВрдЪ рдХрд░рдиреЗ рдХрд╛ рдХрд╛рд░реНрдп рд╢реБрд░реВ рдХрд░реЗрдВ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, 100 рдПрдордПрд╕ рдХреЗ рдЕрдВрддрд░рд╛рд▓ рдХреЗ рд╕рд╛рде):
 function loaded(id) { activeId = id; //  ID  ,   addPmark(id); } function addPmark(id) { clearTimeout(degreeInterval); //        resetAll(); //       if (typeof inactiveMarks[id] != 'undefined') map.geoObjects.remove(inactiveMarks[id]); //    hotspot' map.geoObjects.remove(pMark); //     hotspot' //    -         pMark = new ymaps.Placemark(pmarks[id].coords, { iconContent: '<img src="map/icon_large.png" id="pMarkIcon">', }, { iconImageHref: 'map/pixel.png', iconImageSize: [93, 93], iconImageOffset: [-54, -35] }); map.geoObjects.add(pMark); degreeInterval = setInterval(updateDegree, 100); //     } function resetAll() { var size = pmarks.length; for (var i = 0; i < size; ++i) { if (typeof inactiveMarks[i] != 'undefined') map.geoObjects.remove(inactiveMarks[i]); inactiveMarks[i] = new ymaps.Placemark(pmarks[i].coords, { iconContent: '<img src="map/binocular.png" style=" background:url(\'map/blue-bg.png\');">' }, { iconImageHref: 'map/placemark-bg-blue.png', iconImageSize: [44, 55], iconImageOffset: [-17, -37], panoPath: pmarks[i].xml //      }); if (typeof pmarks[i] != 'undefined') { inactiveMarks[i].events.add('click', function(p) { //          kr.call('loadpano(' + p.originalEvent.target.options.get('panoPath') + ')'); }); } map.geoObjects.add(inactiveMarks[i]); } } 

рд╣рдордиреЗ рдХреНрдпрд╛ рдХрд┐рдпрд╛: рдкреИрдиреЛрд░рдорд╛ рд▓реЛрдб рдХрд┐рдпрд╛, рдкрд╣рд▓реЗ рдбреЙрдЯреНрд╕ рдХреЛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдмрдирд╛рдпрд╛, рдлрд┐рд░ рдЖрдЗрдХрди рдХреЛ рд╕рдХреНрд░рд┐рдп рдПрдХ рдореЗрдВ рдмрджрд▓ рджрд┐рдпрд╛, рдЕрдкрдиреА рдЖрдИрдбреА рдХреЛ рдмрдЪрд╛рдпрд╛, рдФрд░ рд╣рд░ 100 рдПрдордПрд╕ рдореЗрдВ рдПрдХ рдмрд╛рд░ рд╣рдо рджреЗрдЦрдиреЗ рдХреЗ рдХреЛрдг рдореЗрдВ рдмрджрд▓рд╛рд╡ рдХреЗ рд▓рд┐рдП рдЬрд╛рдВрдЪ рдХрд░рддреЗ рд╣реИрдВред

рд╕рдмрд╕реЗ рджрд┐рд▓рдЪрд╕реНрдк рдмрд╛рдд рд░рдбрд╛рд░ рдХрд╛ рд░реЛрдЯреЗрд╢рди рд╣реИред рдпрд╣ рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рд╣реЛрддрд╛ рд╣реИ:
 function updateDegree() { var hlookat = kr.get('view.hlookat'); // check offset offset = pmarks[activeId].offset; //   ,              hlookat -= offset; //      rotate   $('#pMarkIcon').css({ '-moz-transform': 'rotate(' + hlookat + 'deg)', '-webkit-transform': 'rotate(' + hlookat + 'deg)', '-o-transform': 'rotate(' + hlookat + 'deg)', '-ms-transform': 'rotate(' + hlookat + 'deg)' }); } 

рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рдЕрдВрдХ рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ, рдбрд┐рдЧреНрд░реА рдореЗрдВ рдСрдлрд╕реЗрдЯ рдФрд░ рджреГрд╢реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдкрде рдХреЗ рд╕рд╛рде рдПрдХ рд╕рд░рд▓ рд╕рд░рдгреА рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рд╣реИрдВ:
 var pmarks = [ {coords: [107.60835728615834, 51.80498497161981], offset: 29.612430, iconContent: '1', xml: '%SWFPATH%/scenes/solar_tower_1/scene.xml'}, {coords: [107.60834053847577, 51.80625216324661], offset: 52.541204, iconContent: '2', xml: '%SWFPATH%/scenes/solar_tower_2/scene.xml'}, {coords: [107.60839418265618, 51.807256449274895], offset: 58.053150, iconContent: '3', xml: '%SWFPATH%/scenes/solar_tower_3/scene.xml'}, {coords: [107.60832980963896, 51.807974732832555], offset: -59.017464, iconContent: '4', xml: '%SWFPATH%/scenes/solar_tower_4/scene.xml'}, {coords: [107.60930374795694, 51.808262554869444], offset: 52.025996, iconContent: '5', xml: '%SWFPATH%/scenes/russian_dramatic_theater_1/scene.xml'} ]; 

рдХреЛрдб рдкреВрд░рд╛ рд╣реЛ рдЧрдпрд╛ рд╣реИред

рдЦреИрд░, рдпрд╣ рд╕рдм рдХреБрдЫ рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ (рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдореИрдВ рдбреЗрдореЛ рдХреЗ рд▓рд┐рдП рд▓рд┐рдВрдХ рдирд╣реАрдВ рджреЗ рд╕рдХрддрд╛, рдЗрд╕рд▓рд┐рдП рдХреЗрд╡рд▓ рд╕реНрдХреНрд░реАрдирд╢реЙрдЯ рдХреЗ рд╕рд╛рде):

рдкреИрдиреЛрд░рдорд╛ 1:




рдкреИрдиреЛрд░рдорд╛ 2:


Source: https://habr.com/ru/post/In147905/


All Articles