====== Example : Tracking viewer changes ====== This example assumes you have successfully [[example_embed|embedded the component]] and [[example_checklicense|validated the license]]. Steps to take : - Listen for viewer open and close events. - Listen for individual viewer events. ===== 1. Listen for Panorama open and close events. ===== The Orbit WebClient Component provides a ''Panorama'' component that manages all ''PanoramaViewer'' components that are in use. It also dispatches a number of events, such as a viewer opening or closing. client.getPanorama().addEventListener(orbit.webclient.PanoramaEvent.OPENED_VIEWER, function(e) { console.log("Viewer "+ e.viewerId +" is opened."); }); ===== 2. Listen for individual viewer events. ===== The ''Panorama'' object has a ''getViewer()'' method to access individual viewers. We can add and remove event listeners by using the addEventListener() and removeEventListener() methods. The first 2 functions listed below are "event handler" functions, they are called when respectively the STATE_CHANGED or PHOTO_CHANGED events occur. /** * Handle a viewer state change event. * @param e the event object. */ function handleStateChanged(e) { var viewer = client.getPanorama().getViewer(e.viewerId); console.log("Viewer "+ e.viewerId +" State changed (pan="+ e.pan +",tilt="+ e.tilt +",fov="+e.fov +")"); console.log("Viewer "+ e.viewerId +" Photo is "+ viewer.getPhoto().photoId); } /** * Handle a viewer photo change event. * @param e the event object. */ function handlePhotoChanged(e) { var viewer = client.getPanorama().getViewer(e.viewerId); console.log("Viewer "+ e.viewerId +" Photo changed to "+ e.panoramaPhoto.photoId +" with location ", e.panoramaPhoto.location); } /** Listen to "opened-viewer" events. */ client.getPanorama().addEventListener(orbit.webclient.PanoramaEvent.OPENED_VIEWER, function(e) { /* Add event listeners. */ console.log("Viewer "+ e.viewerId +" opened."); var viewer = client.getPanorama().getViewer(e.viewerId); viewer.addEventListener(orbit.webclient.PanoramaViewerEvent.STATE_CHANGED,handleStateChanged); viewer.addEventListener(orbit.webclient.PanoramaViewerEvent.PHOTO_CHANGED,handlePhotoChanged); }); /** Listen to "closed-viewer" events. */ client.getPanorama().addEventListener(orbit.webclient.PanoramaEvent.CLOSED_VIEWER, function(e) { /* Remove event listeners. */ console.log("Viewer "+ e.viewerId +" closed."); var viewer = client.getPanorama().getViewer(e.viewerId); viewer.removeEventListener(orbit.webclient.PanoramaViewerEvent.STATE_CHANGED,handleStateChanged); viewer.removeEventListener(orbit.webclient.PanoramaViewerEvent.PHOTO_CHANGED,handlePhotoChanged); }); ===== Complete Example ======
===== Complete Example ===== Please open the **JavaScript Console** of your browser to see debug messages.