Voici un exemple d’utilisation de la classe GStreetviewPanorama au sein de l’infobulle rattachée à un marker.
Pour afficher le streetView, cliquez sur le marker de votre choix. Si streetView n’est pas disponible pour la vue en cours, un message le signalera dans l’infobulle.
Dans cet exemple, les markers sont déplaçables. Vous pouvez donc déplacer un marker puis cliquer sur celui-ci afin d’afficher l’infobulle contenant le streetView à l’endroit où se trouve le marker une fois relâché.
CODE
<script type="text/javascript"> /* Fonction chargée d'appeler StreetView une fois l'infobulle ouverte */ function displayStreetView(lat,lng){ document.getElementById("streetView").innerHTML = ''; /* On efface le message d'attente */ StreetView = new GStreetviewPanorama(document.getElementById("streetView")); /* Déclaration de l'objet streetview */ GEvent.addListener(StreetView, "error", handleNoFlash); /* Fonction "handleNoFlash" à appeler si erreur */ var options = {yaw : 380, pitch : 0, zoom : 0}; /* Options du streetView : yaw : angle de vue horizontal de la caméra pitch : angle de vue vertical de la caméra zoom : niveau de zoom pour la vue Street View */ StreetView.setLocationAndPOV(new GLatLng(lat,lng), options); } /* Affiche le message d'erreur à la place du streetView */ function handleNoFlash(errorCode) { var msg = "Streetview n'est pas disponible pour cette localisation..."; document.getElementById("streetView").innerHTML = msg; return; } /* Déclaration de la carte */ var map = new GMap2(document.getElementById('map'), { size: new GSize(635,700), mapTypes: [G_HYBRID_MAP]}); var myPoints = []; var bounds = new GLatLngBounds(); /* Déclaration des points à afficher sur la carte */ myPoints.push( new GLatLng(48.8566667, 2.3509871)); // Paris myPoints.push( new GLatLng(48.8123155, 2.2381535)); // Meudon myPoints.push( new GLatLng(48.3906042, -4.4869013)); // Brest myPoints.push( new GLatLng(50.6371834, 3.0630174)); // Lille /*Affichage des points sur la carte */ for(var i = 0; i < myPoints.length; i++){ bounds.extend(myPoints[i]); var thisMarker = addThisMarker(myPoints[i]); map.addOverlay(thisMarker); } /* Association événements / markers */ function addThisMarker(point){ var marker = new GMarker(point, {draggable : true}); GEvent.addListener(marker, "click", function(latlng) { var lat = latlng.lat(); var lng = latlng.lng(); marker.openInfoWindowHtml('<div id="streetView" style="width: 500px; height: 250px; text-align:center">Street View en cours de chargement ...</div>'); setTimeout("displayStreetView('"+lat+"','"+lng+"');",2500); }); GEvent.addListener(marker, "dragstart", function() { marker.closeInfoWindow(); }); GEvent.addListener(marker, "dragend", function(latlng) { var lat = latlng.lat(); var lng = latlng.lng(); marker.openInfoWindowHtml('<div style="font-family:arial; font-size: 11px;"> <h4 align="center" style="margin: 2px;">Informations liées au point</h4> <b>Latitude</b> :'+lat+'<br /><b>Longitude </b>:'+lng+'</div>'); }); return marker; } /* Récupération des limites de la carte */ var newZoom = map.getBoundsZoomLevel(bounds); /* Récupération du nouveau centre de la carte */ var newCentre = bounds.getCenter(); /* Ajout des outils de contrôle sur la carte */ map.addControl(new GOverviewMapControl()); /* Affichage de la carte */ map.setCenter(new Centre, newZoom); </script>