Page Summary
-
This example demonstrates how to display a Street View panorama alongside a map, showcasing the location and viewpoint.
-
The map and Street View are synchronized, with the map reflecting the position and orientation of the Street View.
-
Users can explore the provided code samples in TypeScript, JavaScript, CSS, and HTML to understand the implementation.
-
Links are available to try the sample on JSFiddle or Google Cloud Shell, or to clone and run it locally with Git and Node.js.
This example displays the Street View for a location alongside a map. The map displays the position and point of view shown in the Street View window.
Read the documentation.
TypeScript
async function init(): Promise<void> { // Request needed libraries. const [{ StreetViewPanorama }] = await Promise.all([ google.maps.importLibrary('streetView'), google.maps.importLibrary('maps'), ]); // Get the gmp-map element and its innerMap. const mapElement = document.querySelector('gmp-map')!; const innerMap = mapElement.innerMap; // Get the center of the map. const position = mapElement.center as google.maps.LatLng; // Create a new StreetViewPanorama, set its position, and attach it to the map. const panorama = new StreetViewPanorama(document.getElementById('pano')!, { position, pov: { heading: 34, pitch: 10, }, }); /** * Set the StreetViewPanorama so it displays in the pano element * rather than taking over the map. * This creates a link between the map and the panorama so that * the map is updated when the StreetViewPanorama position changes, * and the StreetViewPanorama is updated when the map changes. */ innerMap.setStreetView(panorama); } void init();
JavaScript
async function init() { // Request needed libraries. const [{ StreetViewPanorama }] = await Promise.all([ google.maps.importLibrary('streetView'), google.maps.importLibrary('maps'), ]); // Get the gmp-map element and its innerMap. const mapElement = document.querySelector('gmp-map'); const innerMap = mapElement.innerMap; // Get the center of the map. const position = mapElement.center; // Create a new StreetViewPanorama, set its position, and attach it to the map. const panorama = new StreetViewPanorama(document.getElementById('pano'), { position, pov: { heading: 34, pitch: 10, }, }); /** * Set the StreetViewPanorama so it displays in the pano element * rather than taking over the map. * This creates a link between the map and the panorama so that * the map is updated when the StreetViewPanorama position changes, * and the StreetViewPanorama is updated when the map changes. */ innerMap.setStreetView(panorama); } void init();
CSS
html, body { height: 100%; margin: 0; padding: 0; } body { display: flex; } gmp-map, #pano { flex: 1; height: 100%; }
HTML
<html>
<head>
<title>Street View split-map-panes</title>
<link rel="stylesheet" type="text/css" href="./style.css" />
<script type="module" src="./index.ts"></script>
<script>
// prettier-ignore
(g=>{var h,a,k,p="The Google Maps JavaScript API",c="google",l="importLibrary",q="__ib__",m=document,b=window;b=b[c]||(b[c]={});var d=b.maps||(b.maps={}),r=new Set,e=new URLSearchParams,u=()=>h||(h=new Promise(async(f,n)=>{await (a=m.createElement("script"));e.set("libraries",[...r]+"");for(k in g)e.set(k.replace(/[A-Z]/g,t=>"_"+t[0].toLowerCase()),g[k]);e.set("callback",c+".maps."+q);a.src=`https://maps.${c}apis.com/maps/api/js?`+e;d[q]=f;a.onerror=()=>h=n(Error(p+" could not load."));a.nonce=m.querySelector("script[nonce]")?.nonce||"";m.head.append(a)}));d[l]?console.warn(p+" only loads once. Ignoring:",g):d[l]=(f,...n)=>r.add(f)&&u().then(()=>d[l](f,...n))})({
key: "GOOGLE_MAPS_API_KEY",
});
</script>
</head>
<body>
<gmp-map
center="42.345573,-71.098326"
zoom="14"
map-id="DEMO_MAP_ID"></gmp-map>
<div id="pano"></div>
</body>
</html>Clone Sample
Git and Node.js are required to run this sample locally. Follow these instructions to install Node.js and NPM. You will also need a Google Maps API key.
The following commands clone the repository, install dependencies, and copy the environment file.
git clone https://github.com/googlemaps-samples/js-api-samples.gitcd js-api-samplesnpm icp .env.template .env
Once you copy the environment file, make sure to open the .env file and replace <Insert your own development API key here> with your actual API key before starting the sample.
cd samples/streetview-simplenpm start