ãµã€ãã«Yandex Panoramasãåã蟌ãããšãã§ããAPIãäœæããããã«éåžžã«é·ãæéãæ±ããããæçµçã«ãããè¡ãããšãã§ããŸããã ããã«ïŒAPIã䜿çšãããšãç¬èªã®ããã©ããäœæã§ããŸãã
ãã®æçš¿ã§ã¯ããã®ãããªä»®æ³ãŠã©ãŒã¯ãè¡ãããã«äžè¬çã«ç¥ã£ãŠããå¿
èŠãããããšã説æããŸãã APIãç°¡åã«äœæã§ããªãã£ãçç±ãããŸããŸãªåé¡ã解決ããAPIã§ã§ããããšãäžç®ã§ãããããã«èª¬æããŸããã

ãšã³ãžã³
ããã©ããµãŒãã¹ã¯ã2009幎9æã«Yandex.Mapsã§éå§ãããŸããã æåã¯ããããã¯ã»ãã®æ°æ¯ã®ããã©ãã§ããããããããæ³åã®ãšãããFlashã§æ©èœããŠããŸããã ãã以æ¥ã倧éã®æ°Žãæµããããã©ããæ°çŸäžã«ãªããã¢ãã€ã«ãã©ãããã©ãŒã ãæ¥éã«æé·ãå§ããFlashã¯ããã«å°éããŸããã§ããã ãããã£ãŠã2013幎é ãæ°ãããã¯ãããžãŒãå¿
èŠã§ãããšå€æããŸããã ãããŠããã®ãã¯ãããžãŒã®åºç€ã¯HTML5ã§ããã
å§ããAPIã¯Canvas2Dã§ãã ããã¯å¥åŠã«æãããããããŸãããã2013幎ã«ã¯ãã®éžæã¯éåžžã«åççã§ããã WebGLã¯2幎åã«æšæºåãããŸããããå®éã«ã¯æºåž¯é»è©±ã«ã¯å±ããŸããã§ããïŒããšãã°ãiOSã§ã¯ãWebGLã¯iAdã§ããåäœããŸããã§ããããã»ãŒå®å
šã«æ»äº¡ããŸããïŒã èªè
ã¯ãåœæäººæ°ããã£ãããããã¹ãŠãCSS 3Dã§è¡ãå¿
èŠãããããšã«å察ããããšãã§ããŸãã ãã ããCSS 3Dã䜿çšãããšãç«æ¹äœã®ããã©ãã®ã¿ãæç»ã§ããŸããããã¹ãŠã®Yandexããã©ãã¯ç圢ã§ãïŒçééã®æåœ±ã§ä¿åãããŸãïŒã
ããã¯ãéçºã«ãããæãéèŠãªæè¡çå°é£ã§ããããŸããã äºå®ããã®å€æã®éç·åœ¢æ§ã®ããã«ãçé¢ããã©ããã¹ã¯ãªãŒã³ã«æ£ç¢ºãã€æ£ç¢ºã«æåœ±ããããšã¯å®¹æã§ã¯ãããŸããã ãã®ãããªæåœ±ã®åçŽãªå®è£
ã§ã¯ãç»é¢ã®åãã¯ã»ã«ã®äžè§æ³èšç®ã®ããŒãå
šäœãå¿
èŠã«ãªããŸããçµå±ãããã©ãç»åå
ã®å¯Ÿå¿ããç¹ãèŠã€ããŠãã®è²ã決å®ããå¿
èŠããããŸãã ããã«ãCanvas 2Dã¯ãç»åã®åãã¯ã»ã«ãåå¥ã«æäœãã广çãªæ¹æ³ãæäŸããŸããã
ãã®å°é£ãªç¶æ³ã解決ããããã«ãã³ã³ãã¥ãŒã¿ãŒã°ã©ãã£ãã¯ã¹ã§æãå€ãããªãã¯ã®1ã€ã§ããç·åœ¢è£éã䜿çšãããŸãã ç»é¢ã®åãã¯ã»ã«ã«ã€ããŠãããã©ãç»åã®å¯Ÿå¿ããç¹ã®åº§æšãæ£ç¢ºã«èšç®ããŸããã ããã¯ãäºåã«éžæããäžéšã®ãã¯ã»ã«ã«å¯ŸããŠã®ã¿è¡ããŸããæ®ãã®ãã¯ã»ã«ã«ã€ããŠã¯ãæ¢ã«èšç®ããããã¯ã»ã«éãè£éããããšã§åº§æšãèŠã€ããŸãã å¯äžã®åé¡ã¯ããããã®ãã¯ã»ã«ãéžæããæ¹æ³ã§ãã
æ¢ã«è¿°ã¹ãããã«ãCanvas2Dã§ãã¯ã»ã«åäœã§ç»åã®è²ãèšé²ããã®ã¯äžäŸ¿ã§ãããç»åãšãã®2次å
倿ã䜿çšãããšäŸ¿å©ã§ãã ããã«ããã®ãããªå€æã¯å®éã«è£éãå®è£
ããŸãã ããã©ãã¬ã³ããªã³ã°ã¢ã«ãŽãªãºã ã®åºç€ãšããŠäœ¿çšããããšã«æ±ºããã®ã¯ã圌ãã§ããã ãŸãã2次å
ç·åœ¢å€æã¯ã¹ã¯ãªãŒã³äžã®1ã€ãšããã©ãç»åäžã®2ã€ã®ããªãã¬ãããã€ã³ãã«ãã£ãŠäžæã«æ±ºå®ããããããæåœ±ãæ£ç¢ºã«èæ
®ãããã€ã³ãã»ããã®éžæã¯ããèªäœã§åŸãããŸããããã©ãçäœãäžè§åœ¢ã«åå²ããŸãã æçµçãªã¬ã³ããªã³ã°ã¢ã«ãŽãªãºã ã¯æ¬¡ã®ãšããã§ãã

ããããã¹ãŠæžããŠå®è¡ããåŸããã¹ã©ã€ãã·ã§ãŒããšããèšèã§ãã説æãããŠãããã®ãèŠãŸããã ãã¬ãŒã ã¬ãŒãã¯å®å
šã«åãå
¥ããããŸããã§ããã ãããã¡ã€ãªã³ã°ã§ã¯ãCanvas 2Dã³ã³ããã¹ãã®save()
ããã³restore()
æ©èœãæãå€ãæ¶è²»ãããããšãããããŸããã 圌ãã¯ã©ãããæ¥ãã®ã§ããïŒ Canvas2Dã®ããªãã³ã°æ©èœã æ®å¿µãªãããçŸåšã®ã¯ãããããªã»ããããŠæ°ããã¯ããããèšå®ã§ããããã«ããã«ã¯ãèšå®ããåã«ã³ã³ããã¹ãã®ç¶æ
ãä¿åããå¿
èŠãããïŒããã¯åã«save()
ïŒãå¿
èŠãªãã¹ãŠã®æç»ã®åŸãä¿åãããç¶æ
ã埩å
ããŸãïŒãããŠãããã¯restore()
ïŒ ãããã®æäœã¯å·å
šäœã§æ©èœãããã
ã³ã³ããã¹ãã圌ãã¯å®ãã¯ãããŸããã ããã«ãæ¯ååãããªãã³ã°ãè¡ããŸãïŒåæååŸãçäœã®äžè§åœ¢ãžã®åå²ãšããã©ãç»åãžã®é
眮ã¯å€ãããŸããïŒã ãã£ãã·ã¥ããã®ã¯çã«ããªã£ãŠããŸãïŒ
ããã«èšã£ãŠãã£ãã äžè§åœ¢ã®çäœãçæããåŸãããã©ãç»åããåäžè§åœ¢ããåãåãããåå¥ã®ãã£ãã·ã¥ãã£ã³ãã¹ã«ä¿åããŸãã ãã®ãã£ãã·ã¥ã®æ®ãã¯éæã®ãŸãŸã§ãã ãã®æé©åã®åŸãã¢ãã€ã«ããã€ã¹ã§ã30ã60ãã¬ãŒã /ç§ãååŸã§ããŸããã ãã®çµéšãããæ¬¡ã®ã¬ãã¹ã³ãåŠã¶ããšãã§ããŸããCanvas2Dã§ã¬ã³ããªã³ã°ãéçºãããšãããã£ãã·ã¥ããã³ããªã¬ã³ããªã³ã°ã§ãããã¹ãŠã®ãã®ã ãããŠãäœããçªç¶äžå¯èœãªå Žå-å¯èœãªæ¹æ³ã§ãããè¡ãããŸãåã¬ã³ããªã³ã°ããŸãã

ãã£ãã·ã³ã°ïŒãã®äžã®å€ãã®ãã®ãšåæ§ïŒã«ã¯æ¬ ç¹ããããŸãïŒã¡ã¢ãªãŒæ¶è²»ã¯å¿
ç¶çã«å¢å ããŸãã ããããŸãã«ããã©ãã¬ã³ããªã³ã°ã§çºçããããšã§ãã 飿¬²ã®å¢å ã¯å€ãã®åé¡ãåŒãèµ·ãããŠããŸãã æãæ³šç®ã«å€ããã®ã¯ããã¹ã¯ããããã©ãããã©ãŒã äžã§ãã£ãŠãããã©ãŠã¶ã®ã¯ã©ãã·ã¥ãšãããªãé
ãèµ·åã§ãã æåŸã«ããããã®åé¡ã«å¯ŸåŠããã®ã«ããããããŠãCanvas 2Dã§ããã©ãç»åãåããã°ã©ã ããããšãæåŠãããã®éãè¡ããŸããã ãããã圌ã¯çµ¶å¯Ÿã«é¢çœããªã:)
ãã ãããã®åã§ãããWebGLã®åŽé¢ããèŠå§ããŸããã ãã®ãããããŸããŸãªçç±ã«ä¿ãããŸãããããã®äž»ãªçç±ã¯ãããããiOS 8ã§ãWebGLã¯Safariã§æ©èœããŠããŸããã
ã¬ã³ããªã³ã°ã®WebGLããŒãžã§ã³ãéçºããéã®äž»ãªåé¡ã¯ãããã©ãã®ãµã€ãºã§ããã ããã©ãç»åã¯ã©ã®ãã¯ã¹ãã£ã«ãé©åããŸããã§ããã ãäžçã®å€ãååã«åŸãããšããååã«å°ããããã®åé¡ãåã³è§£æ±ºããããã©ãçäœãã»ã¯ã¿ãŒã«åå²ããŸããã åã»ã¯ã¿ãŒã«ã¯ç¬èªã®ãã¯ã¹ãã£ããããŸãã åæã«ãã¡ã¢ãªãšGPUãªãœââãŒã¹ãç¯çŽããããã«ãé衚瀺ã®ã»ã¯ã¿ãŒã¯å®å
šã«åé€ãããŸãã ããããåã³ç»é¢ã«è¡šç€ºãããå¿
èŠãããå Žåããããã®ããŒã¿ã¯åã³ïŒéåžžã¯ãã©ãŠã¶ãã£ãã·ã¥ããïŒãªããŒããããŸãã
ããã©ããåã蟌ã
Maps APIã䜿çšããŠããã©ããåã蟌ãã«ã¯ããŸãå¿
èŠãªã¢ãžã¥ãŒã«ãæ¥ç¶ããŸãã ããã¯2ã€ã®æ¹æ³ã§è¡ãããšãã§ããŸãïŒAPIãæ¥ç¶ãããšãã«load
ãã©ã¡ãŒã¿ãŒã§æå®ããããã¢ãžã¥ã©ãŒã·ã¹ãã ã䜿çšããŸãïŒããŒããããã¢ãžã¥ãŒã«ã®ããã©ã«ãã»ããã«ããã©ãã¢ãžã¥ãŒã«ã远å ããŸãïŒã
<script src="https://api-maps.yandex.ru/2.1/?lang=ru_RU&load=panorama.locate,panorama.Player"></script> <script> </script>
ããã©ãã®æäœãéå§ããåã«ããŠãŒã¶ãŒã®ãã©ãŠã¶ããšã³ãžã³ã§ãµããŒããããŠããããšã確èªããå¿
èŠããããŸãã ããã¯ã ymaps.panorama.isSupported
颿°ã䜿çšããŠymaps.panorama.isSupported
ãŸãã
if (!ymaps.panorama.isSupported()) {
ããã©ããéãã«ã¯ããŸããµãŒããŒãã説æãååŸããå¿
èŠããããŸãã ããã¯ã ymaps.panorama.locate
颿°ã䜿çšããŠè¡ãããŸãã
ymaps.panorama.locate( [0, 0]
ymaps.panorama.locate
ã«ãã£ãŠè¿ããããããã¹ã解決ããçµæã¯ãéä¿¡ããããã€ã³ãã®è¿ãã«ããããã©ãã®é
åã«ãªããŸãã ãã®ãããªããã©ãããªãå Žåãé
åã¯ç©ºã«ãªããŸãã ãã®ãããªããã©ããè€æ°ããå Žåãéä¿¡ããããã€ã³ãããã®è·é¢ã§ãœãŒããããŸãã æåã®ãã®ãæãè¿ããªããŸãã
åŒãç¶ã空äžããã©ãããªã¯ãšã¹ãã§ããŸãïŒ
ymaps.panorama.locate( [0, 0],
ããã©ãã®èª¬æãåãåã£ãããããŒãžã«è¡šç€ºãããã¬ãŒã€ãŒãäœæã§ããŸãã
var player = new ymaps.panorama.Player( 'player',
ããŒãžã«è¡šç€ºãããŸãïŒ

ããã©ããéãæãéããŠç°¡åãªæ¹æ³ã¯ã ymaps.panorama.createPlayer
颿°ã§ãã
ymaps.panorama.createPlayer( 'player',
ãã®å Žåã3çªç®ã®ãã©ã¡ãŒã¿ãŒã§ 1ã€ä»¥äžã®ãªãã·ã§ã³ãæå®ã§ããŸãã
ymaps.panorama.createPlayer( 'player', [0, 0], {
ãã¬ãŒã€ãŒã¯ãäœæããããšãããã©ãã®è¡šç€ºãå¶åŸ¡ãããŠãŒã¶ãŒã€ãã³ãããµãã¹ã¯ã©ã€ãããããã®ã³ã³ãã¯ããªAPIãæäŸããŸãã ããããç§ã«ã¯æããŸãããããã¯ããã©ãAPIã®æãè峿·±ãæ©èœã§ã¯ãããŸããã
èªåã®ããã©ã
ãããããAPIãæäŸããæãè峿·±ãæ©èœã¯ãç¬èªã®ããã©ããäœæãããµã€ãã«åã蟌ãããšã§ãã
ããã©ãã¯ãã¹ãŠãããã©ãç»åã®æ®åœ±ãšæºåããå§ãŸããŸãã æ®åœ±ã«ã¯ãç¹å¥ãªããã€ã¹ãéåžžã®ã«ã¡ã©ããŸãã¯ã¹ããŒããã©ã³ã䜿çšã§ããŸãã äž»ãªãã®ã¯ãå°æãšæ¥çã®çµæãçééã®æåœ±ã§ã®çé¢ããã©ãã§ããããšã§ãã ããšãã°ãAndroidã®æšæºã«ã¡ã©ã¢ããªã±ãŒã·ã§ã³ã§ã¯ãç®çã®æåœ±ã§ããã©ããæ®åœ±ããŠæ¥çã§ããŸãã ããã䜿çšããŠãå±
å¿å°ã®è¯ãåºå Žã®ããã©ããæ®åœ±ããŸããã
ããã©ãç»åãæ®åœ±ããåŸããã¬ãŒã€ãŒã§è¡šç€ºããããã®æºåãå¿
èŠã§ãã ãããè¡ãã«ã¯ãã¿ã€ã«ã«ã«ããããå¿
èŠããããŸãã ããã«ãããŸããŸãªã¬ãã«ã®ãã¹ã¿ãŒããŒã·ã§ã³çšã«ãããã€ãã®ç°ãªããµã€ãºã®ç»åãæºåã§ããŸãã ãã¬ãŒã€ãŒã¯ããã¬ãŒã€ãŒãéããŠããDOMèŠçŽ ã®çŸåšã®ãµã€ãºãšãããã©ãã®è¡šç€ºé åã®è§åºŠå¯žæ³ã«æé©ãªã¬ãã«ãéžæããŸãã ãŸããç»åã®æå°ã¬ãã«ã2048ãã¯ã»ã«æªæºã®å Žåããããã°ã¬ãã·ããžãŒããšãã§ã¯ããã®äœæã«äœ¿çšãããŸãã ãã¬ãŒã€ãŒã¯ããã®ã¬ãã«ã®ã¿ã€ã«ãæãé«ãåªå
床ã§ããŒãããããè¯ãã¿ã€ã«ããªãå Žæã衚瀺ããŸãïŒããšãã°ããŸã ããŒããããŠããªãããã¡ã¢ãªããæ¶å»ãããŠãŸã ãªããŒããããŠããªãå ŽåïŒã
ä»»æã®ãœãããŠã§ã¢ã䜿çšããŠãç»åãã¿ã€ã«ã«ã«ããã§ããŸãïŒç¹å®ã®å¿èåãããå Žå-å°ãªããšããã€ã³ãïŒã ã¿ã€ã«ã®ãµã€ãºã¯2ã®ã¹ãä¹ã§ããå¿
èŠããããŸãïŒWebGLã§äœæ¥ããããšããã人ã¯ããã®æè¶³ã®äœçœ®ãã©ãããæ¥ãã®ãæšæž¬ããŸãïŒã ImageMagickãå©çšããŸããã
æåŸã«ãããã©ãçšã®ããçš®ã®ã³ãŒããæžããŸãããã APIã¯ãçžäºæ¥ç¶ãããã€ã³ã¿ãŒãã§ã€ã¹ã®ã·ã¹ãã ã§ãã ãããã®ã€ã³ã¿ãŒãã§ã€ã¹ã¯ãããã©ããªããžã§ã¯ããšããã«é¢é£ä»ãããããã¹ãŠã®ãªããžã§ã¯ããèšè¿°ããŸãã

ãã®å³ããšã³ãã£ãã£ããšã«åæããŠã¿ãŸãããã
ããã©ããªããžã§ã¯ãã¯IPanorama
ã€ã³ã¿ãŒãã§ã€ã¹ãå®è£
ããå¿
èŠããããŸãã ããã©ãã¯ã©ã¹ãäœæããã®ã¯ç°¡åã§ãæœè±¡ã¯ã©ã¹ymaps.panorama.Base
ã ããã€ãã®IPanorama
ã¡ãœããã®åŠ¥åœãªããã©ã«ãå®è£
ãšãããã©ãããã¬ãŒã€ãŒã«ãã£ãŠèª²ãããå¶éãæºãããŠãããã©ããã確èªããvalidate
ã¡ãœããïŒããšãã°ãæå®ãããã¿ã€ã«ãµã€ãºã2ã®ã¹ãä¹ãã©ããïŒãæäŸããŸãã ããã䜿çšããŸãããã
function Panorama () { Panorama.superclass.constructor.call(this);
ãŸãããã¬ãŒã€ãŒã®ããã©ããžãªã¡ããªã«ã€ããŠèª¬æããŸãã ãããè¡ãã«ã¯ãããã¥ã¡ã³ãã§å€æãããšã4ã€ã®æ°å€ã®é
åãè¿ãgetAngularBBox
ã¡ãœãããå®è£
ããå¿
èŠããããŸãã ãããã®æ°åã®æå³ã¯äœã§ããïŒ ãã®è³ªåã«çããããã«ãããã©ãã¯ç圢ãã€ãŸãçã«éããããŠããããšãæãåºããŠãã ããã çäžã®ããã©ãç»åã®äœçœ®ã説æããã«ã¯ãããã€ãã®ãåç
§ããã€ã³ããéžæããå¿
èŠããããŸãã éåžžãé·æ¹åœ¢ïŒããã³çäœäžã«ãªãããã©ãç»åãã³ã³ãã¥ãŒã¿ãŒã®ç»åã®ããã«ããŸãã«ããã§ãïŒã®å Žåã2ã€ã®å察åŽã®è§ã®åº§æšãéžæãããŸãã ç§ãã¡ã®å Žåããã®ã¢ãããŒãã¯çäœäžã§æ©èœãç¶ããŸãããªããªããç»åã®åçŽãªåŽé¢ã¯éãåããããšååç·ã«ãªããæ°Žå¹³ã¯å¹³è¡ã«ãªããŸãã ããã¯ãé·æ¹åœ¢ã®å蟺ã«ããã®èŸºã®ãã¹ãŠã®ãã€ã³ãã«å
±éã®ç¬èªã®è§åºŠåº§æšãããããšãæå³ããŸãã getAngularBBox
ã¡ãœããã«ãã£ãŠè¿ãããé
åãæ§æããã®ã¯ããããã®åŽé¢ã®åº§æšã§ãããããã©ãã®å¢çãå®ããäžçš®ã®ç圢ã®é·æ¹åœ¢ãå®çŸ©ããŸãïŒã¡ãœããã®ååã§ãïŒã
ãã¬ãŒã€ãŒã¯ãããã©ãã®ãžãªã¡ããªïŒãããã£ãŠãããã©ãç»åèªäœïŒã«éèŠãªå¶éã課ããŸããããã©ãç»åã¯ãçäœäžã§æ°Žå¹³ã«éããŠãå®å
šãªåã圢æããå¿
èŠããããŸãã getAngularBBox
ã¡ãœããã«ãã£ãŠè¿ãããå€ã®å Žåãããã¯ãããã©ãã®å³é
ãšå·Šé
ã®å¢çã®å·®ã2Ïã§ããããšãæå³ããŸãã åçŽæ¹åã®å¢çç·ã«ã€ããŠã¯ãä»»æã«èšå®ã§ããŸãã
ã¹ããŒããã©ã³ã§æ®åœ±ããããã©ãã¯ãæ°Žå¹³æ¹åã ãã§ãªããåçŽæ¹åãã€ãŸã極ããæ¥µãŸã§ã®å®å
šãªããã©ãã§ãã ãããã£ãŠãçé¢äžã®ããã©ãã®å¢çã¯ãéé[Ï/2, -Ï/2]
åçŽïŒäžé𿥵ããäžéšïŒããã³æ°Žå¹³[0, 2Ï]
ééïŒããã§ã¯ç°¡åã«ããããã«ãããã©ãã®æ¥åéšã®æ¹åããã¡ãããããã§ã¯ãããŸããïŒã ãã®ã³ãŒãã¯æ¬¡ã®ãšããã§ãã
getAngularBBox: function () { return [ 0.5 * Math.PI, 2 * Math.PI, -0.5 * Math.PI, 0 ]; }
ãŸããããã©ãã®äœçœ®ãšãããã©ããå®çŸ©ãããŠãã座æšç³»ãè¿ãã¡ãœãããå®è£
ããå¿
èŠããããŸãã ãã¬ãŒã€ãŒã¯ããã®ããŒã¿ã䜿çšããŠãã·ãŒã³å
ã®ããã©ãã«é¢é£ä»ããããŠãããªããžã§ã¯ãïŒäžã®ãªããžã§ã¯ãã«ã€ããŠïŒãæ£ããé
眮ããŸãã
getPosition: function () {
次ã«ãããã©ãç»åèªäœã«ã€ããŠèª¬æããŸã-ã¿ã€ã«ã«ã«ãããããæ¹æ³ãšããããã®ã¿ã€ã«ã眮ãããå Žæã ãããè¡ãã«ã¯ã getTileLevels
ãšgetTileLevels
ãå®è£
ããå¿
èŠãããgetTileLevels
ã æåã®ãã®ã§ã¯ããã¹ãŠãæããã§ããã¿ã€ã«ã®ãµã€ãºãè¿ããŸãã
getTileSize: function () { return [512, 512]; }
getTileLevels
ã¯ãããã©ãç»åã®ãºãŒã ã¬ãã«ã®èª¬æãªããžã§ã¯ãã®é
åãè¿ããŸãã ç§ã¯ãããã®2ã€ããã£ãããšãæãåºããŸãïŒé«ïŒæ¯èŒçïŒãšäœå質ã ãã®ãããªå説æãªããžã§ã¯ãã¯ã2ã€ã®ã¡ãœããgetImageSize
ããã³getTileUrl
ã§æ§æãããIPanoramaTileLevel
ã€ã³ã¿ãŒãã§ã€ã¹ãå®è£
ããå¿
èŠããããŸãã ç°¡åã«ããããã«ããã®ããã®åå¥ã®ã¯ã©ã¹ã¯çšæãããå¿
èŠãªã¡ãœããã§ãªããžã§ã¯ããè¿ãã ãã§ãã
getTileLevels: function () { return [ { getTileUrl: function (x, y) { return '/hq/' + x + '-' + y + '.jpg'; }, getImageSize: function () { return [7168, 3584]; } }, { getTileUrl: function (x, y) { return '/lq/' + x + '-' + y + '.jpg'; }, getImageSize: function () { return [512, 256]; } } ]; }
ããã«ãããæå°éã®ããã©ãã®èª¬æãæºåã§ãããã¬ãŒã€ãŒã¯ããã衚瀺ã§ããããã«ãªããŸãã
var player = new ymaps.panorama.Player('player', new Panorama());
ãšããã§ããã«ããŒé¢æ°ymaps.panorama.Base.createPanorama
ã䜿çšãããšããã®ãããªæå°éã®ããã©ãã®èª¬æãããéãç°¡åã«äœæã§ããŸãã
var player = new ymaps.panorama.Player( 'player', ymaps.panorama.Base.createPanorama({ angularBBox: [ 0.5 * Math.PI, 2 * Math.PI, -0.5 * Math.PI, 0 ], position: [0, 0], coordSystem: ymaps.coordSystem.cartesian, name: ' -', tileSize: [512, 512], tileLevels: [ { getTileUrl: function (x, y) { return '/hq/' + x + '-' + y + '.jpg'; }, getImageSize: function () { return [7168, 3584]; } }, { getTileUrl: function (x, y) { return '/lq/' + x + '-' + y + '.jpg'; }, getImageSize: function () { return [512, 256]; } } ] }) );
å®éã®ããã©ãã«å ããŠããã¬ãŒã€ãŒã¯ããŒã«ãŒããã©ã³ãžã·ã§ã³ãã³ãã¥ãã±ãŒã·ã§ã³ã®3çš®é¡ã®ãªããžã§ã¯ãã衚瀺ã§ããŸãã
ããŒã«ãŒã䜿çšãããšãããã©ãå
ã®ãªããžã§ã¯ããæå®ã§ããŸãïŒããšãã°ãYandexããã©ãå
ã®å®¶çªå·ãæã€ããŒã«ãŒïŒã ããŒã«ãŒãªããžã§ã¯ãã¯IPanoramaMarker
ã€ã³ã¿ãŒãã§ã€ã¹ãå®è£
ããå¿
èŠããããŸãã ãã®ã€ã³ã¿ãŒãã§ã€ã¹ã«ã¯ã getIconSet
ã getPosition
ããã³getPanorama
3ã€ã®ã¡ãœããã®ã¿ãå«ãŸããŠããŸãã æåŸã®2ã€ã®ç®çã¯ãååããæããã§ãã ãŸãã説æããå¿
èŠããããšæããŸãã å®éãããŒã«ãŒã¯ã€ã³ã¿ã©ã¯ãã£ããªèŠçŽ ã§ãã ãŠãŒã¶ãŒã€ãã³ãã«å¿ããŠç¶æ
ã倿ŽããŸãã ãããã®ç¶æ
ãšãUIã®ã€ãã³ãã«å¿ããŠã©ã®ããã«å€åãããã¯ã次ã®å³ã§èšè¿°ã§ããŸãã

ããšãã°ãå®¶ã瀺ãããŒã«ãŒã ããã©ã«ãã®ç¶æ
ãã«ãŒãœã«ã®ãããŒç¶æ
ãããã³å±éãããç¶æ
ã¯æ¬¡ã®ãšããã§ãã

getIconSet
ã¡ãœããããã¬ãŒã€ãŒã«æ»ãã®ã¯ããããã®ç¶æ
ã®ã¢ã€ã³ã³ã§ãã ã¢ã€ã³ã³ã¯ãµãŒããŒããããŠã³ããŒãã§ãïŒããããã®ã¡ãœãããéåæã«ãªã£ãŠããçç±ã§ãïŒãæç¶ãçã«çæãããŸãïŒãã£ã³ãã¹ã䜿çšïŒã ãã®äŸã§ã¯ãããã©ãã«1ã€ã®ããŒã«ãŒãšãã®ã¢ã€ã³ã³ãæ¢ã«èªã¿èŸŒãŸããŠãããšä»®å®ããŸãã
getMarkers: function () {
ãã©ã³ãžã·ã§ã³ã¯ç¢å°ã§ãããã¯ãªãã¯ãããšãã¬ãŒã€ãŒã¯é£æ¥ããããã©ãã«åãæ¿ãããŸãã é·ç§»ãèšè¿°ãããªããžã§ã¯ãã¯ã IPanoramaThorougfare
ã€ã³ã¿ãŒãã§ã€ã¹ãå®è£
ããå¿
èŠããããŸãã
getThoroughfares: function () {
æ¥ç¶ã¯ãããŒã«ãŒãšãã©ã³ãžã·ã§ã³ã®äžçš®ã§ããæåã®æ¥ç¶ã®ããã«èŠããŸãããæåŸã®æ¥ç¶ã®ããã«åäœããŸãã ã³ãŒãã§ã¯ãããŒã«ãŒãšåãæ¹æ³ã§å®è£
ãããŠããŸããã getConnectedPanorama
ã¡ãœããã远å ãããŠããŸãïŒ IPanoramaConnection
åç
§ïŒã
çµè«ã®ä»£ããã«
ããã©ãAPIã¯çŸåšããŒã¿ã¹ããŒã¿ã¹ã§ãã åã蟌ã¿ããµã€ãããã³ã¢ããªã±ãŒã·ã§ã³ã§ã®ãã¹ãã ã¯ã©ã ã VKontakteã®ã°ã«ãŒã ã FacebookããŸãã¯ãµããŒããéããŠãã®ããšããç¥ãããã ããã ãã§ã«ã·ã¢ã³ã§ã:)