CINXE.COM

Photo Sphere XMP Metadata  |  Street View  |  Google for Developers

<!doctype html> <html lang="en" dir="ltr"> <head> <meta name="google-signin-client-id" content="721724668570-nbkv1cfusk7kk4eni4pjvepaus73b13t.apps.googleusercontent.com"> <meta name="google-signin-scope" content="profile email https://www.googleapis.com/auth/developerprofiles https://www.googleapis.com/auth/developerprofiles.award"> <meta property="og:site_name" content="Google for Developers"> <meta property="og:type" content="website"><meta name="theme-color" content="#009688"><meta charset="utf-8"> <meta content="IE=Edge" http-equiv="X-UA-Compatible"> <meta name="viewport" content="width=device-width, initial-scale=1"> <link rel="manifest" href="/_pwa/developers/manifest.json" crossorigin="use-credentials"> <link rel="preconnect" href="//www.gstatic.com" crossorigin> <link rel="preconnect" href="//fonts.gstatic.com" crossorigin> <link rel="preconnect" href="//fonts.googleapis.com" crossorigin> <link rel="preconnect" href="//apis.google.com" crossorigin> <link rel="preconnect" href="//www.google-analytics.com" crossorigin><link rel="stylesheet" href="//fonts.googleapis.com/css?family=Google+Sans:400,500|Roboto:400,400italic,500,500italic,700,700italic|Roboto+Mono:400,500,700&display=swap"> <link rel="stylesheet" href="//fonts.googleapis.com/css2?family=Material+Icons&family=Material+Symbols+Outlined&display=block"><link rel="stylesheet" href="https://www.gstatic.com/devrel-devsite/prod/v870e399c64f7c43c99a3043db4b3a74327bb93d0914e84a0c3dba90bbfd67625/developers/css/app.css"> <link rel="shortcut icon" href="https://www.gstatic.com/devrel-devsite/prod/v870e399c64f7c43c99a3043db4b3a74327bb93d0914e84a0c3dba90bbfd67625/developers/images/favicon-new.png"> <link rel="apple-touch-icon" href="https://www.gstatic.com/devrel-devsite/prod/v870e399c64f7c43c99a3043db4b3a74327bb93d0914e84a0c3dba90bbfd67625/developers/images/touchicon-180-new.png"><link rel="canonical" href="https://developers.google.com/streetview/spherical-metadata"><link rel="search" type="application/opensearchdescription+xml" title="Google for Developers" href="https://developers.google.com/s/opensearch.xml"> <link rel="alternate" hreflang="en" href="https://developers.google.com/streetview/spherical-metadata" /><link rel="alternate" hreflang="x-default" href="https://developers.google.com/streetview/spherical-metadata" /><link rel="alternate" hreflang="ar" href="https://developers.google.com/streetview/spherical-metadata?hl=ar" /><link rel="alternate" hreflang="bn" href="https://developers.google.com/streetview/spherical-metadata?hl=bn" /><link rel="alternate" hreflang="zh-Hans" href="https://developers.google.com/streetview/spherical-metadata?hl=zh-cn" /><link rel="alternate" hreflang="zh-Hant" href="https://developers.google.com/streetview/spherical-metadata?hl=zh-tw" /><link rel="alternate" hreflang="fa" href="https://developers.google.com/streetview/spherical-metadata?hl=fa" /><link rel="alternate" hreflang="fr" href="https://developers.google.com/streetview/spherical-metadata?hl=fr" /><link rel="alternate" hreflang="de" href="https://developers.google.com/streetview/spherical-metadata?hl=de" /><link rel="alternate" hreflang="he" href="https://developers.google.com/streetview/spherical-metadata?hl=he" /><link rel="alternate" hreflang="hi" href="https://developers.google.com/streetview/spherical-metadata?hl=hi" /><link rel="alternate" hreflang="id" href="https://developers.google.com/streetview/spherical-metadata?hl=id" /><link rel="alternate" hreflang="it" href="https://developers.google.com/streetview/spherical-metadata?hl=it" /><link rel="alternate" hreflang="ja" href="https://developers.google.com/streetview/spherical-metadata?hl=ja" /><link rel="alternate" hreflang="ko" href="https://developers.google.com/streetview/spherical-metadata?hl=ko" /><link rel="alternate" hreflang="pl" href="https://developers.google.com/streetview/spherical-metadata?hl=pl" /><link rel="alternate" hreflang="pt-BR" href="https://developers.google.com/streetview/spherical-metadata?hl=pt-br" /><link rel="alternate" hreflang="ru" href="https://developers.google.com/streetview/spherical-metadata?hl=ru" /><link rel="alternate" hreflang="es" href="https://developers.google.com/streetview/spherical-metadata?hl=es" /><link rel="alternate" hreflang="es-419" href="https://developers.google.com/streetview/spherical-metadata?hl=es-419" /><link rel="alternate" hreflang="th" href="https://developers.google.com/streetview/spherical-metadata?hl=th" /><link rel="alternate" hreflang="tr" href="https://developers.google.com/streetview/spherical-metadata?hl=tr" /><link rel="alternate" hreflang="vi" href="https://developers.google.com/streetview/spherical-metadata?hl=vi" /><title>Photo Sphere XMP Metadata &nbsp;|&nbsp; Street View &nbsp;|&nbsp; Google for Developers</title> <meta property="og:title" content="Photo Sphere XMP Metadata &nbsp;|&nbsp; Street View &nbsp;|&nbsp; Google for Developers"><meta property="og:url" content="https://developers.google.com/streetview/spherical-metadata"><meta property="og:image" content="https://www.gstatic.com/devrel-devsite/prod/v870e399c64f7c43c99a3043db4b3a74327bb93d0914e84a0c3dba90bbfd67625/developers/images/opengraph/teal.png"> <meta property="og:image:width" content="1200"> <meta property="og:image:height" content="675"><meta property="og:locale" content="en"><meta name="twitter:card" content="summary_large_image"><script type="application/ld+json"> { "@context": "https://schema.org", "@type": "Article", "headline": "Photo Sphere XMP Metadata" } </script><script type="application/ld+json"> { "@context": "https://schema.org", "@type": "BreadcrumbList", "itemListElement": [{ "@type": "ListItem", "position": 1, "name": "Street View", "item": "https://developers.google.com/streetview" },{ "@type": "ListItem", "position": 2, "name": "Photo Sphere XMP Metadata", "item": "https://developers.google.com/streetview/spherical-metadata" }] } </script> <link rel="stylesheet" href="/extras.css"></head> <body class="" template="page" theme="teal" type="article" layout="docs" concierge='closed' display-toc pending> <devsite-progress type="indeterminate" id="app-progress"></devsite-progress> <section class="devsite-wrapper"> <devsite-cookie-notification-bar></devsite-cookie-notification-bar><devsite-header role="banner"> <div class="devsite-header--inner nocontent"> <div class="devsite-top-logo-row-wrapper-wrapper"> <div class="devsite-top-logo-row-wrapper"> <div class="devsite-top-logo-row"> <button type="button" id="devsite-hamburger-menu" class="devsite-header-icon-button button-flat material-icons gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Navigation menu button" visually-hidden aria-label="Open menu"> </button> <div class="devsite-product-name-wrapper"> <a href="https://developers.google.com/streetview"> <div class="devsite-product-logo-container" size="medium" > <picture> <img class="devsite-product-logo" alt="Street View" src="https://developers.google.com/static/streetview/images/streetview_logo.png" srcset="https://developers.google.com/static/streetview/images/streetview_logo_36.png 36w, https://developers.google.com/static/streetview/images/streetview_logo_48.png 48w, https://developers.google.com/static/streetview/images/streetview_logo_72.png 72w, https://developers.google.com/static/streetview/images/streetview_logo_96.png 96w, https://developers.google.com/static/streetview/images/streetview_logo_480.png 480w, https://developers.google.com/static/streetview/images/streetview_logo_720.png 720w, https://developers.google.com/static/streetview/images/streetview_logo_856.png 856w, https://developers.google.com/static/streetview/images/streetview_logo_960.png 960w, https://developers.google.com/static/streetview/images/streetview_logo_1440.png 1440w, https://developers.google.com/static/streetview/images/streetview_logo_1920.png 1920w, https://developers.google.com/static/streetview/images/streetview_logo_2880.png 2880w" sizes="64px" loading="lazy" > </picture> </div> </a> <span class="devsite-product-name"> <ul class="devsite-breadcrumb-list" > <li class="devsite-breadcrumb-item "> <a href="https://developers.google.com/streetview" class="devsite-breadcrumb-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Upper Header" data-value="1" track-type="globalNav" track-name="breadcrumb" track-metadata-position="1" track-metadata-eventdetail="Street View" > Street View </a> </li> </ul> </span> </div> <div class="devsite-top-logo-row-middle"> <div class="devsite-header-upper-tabs"> </div> <devsite-search enable-signin enable-search enable-suggestions enable-query-completion project-name="Street View" tenant-name="Google for Developers" project-scope="/streetview" url-scoped="https://developers.google.com/s/results/streetview" > <form class="devsite-search-form" action="https://developers.google.com/s/results" method="GET"> <div class="devsite-search-container"> <button type="button" search-open class="devsite-search-button devsite-header-icon-button button-flat material-icons" aria-label="Open search"></button> <div class="devsite-searchbox"> <input aria-activedescendant="" aria-autocomplete="list" aria-label="Search" aria-expanded="false" aria-haspopup="listbox" autocomplete="off" class="devsite-search-field devsite-search-query" name="q" placeholder="Search" role="combobox" type="text" value="" > <div class="devsite-search-image material-icons" aria-hidden="true"> </div> <div class="devsite-search-shortcut-icon-container" aria-hidden="true"> <kbd class="devsite-search-shortcut-icon">/</kbd> </div> </div> </div> </form> <button type="button" search-close class="devsite-search-button devsite-header-icon-button button-flat material-icons" aria-label="Close search"></button> </devsite-search> </div> <devsite-language-selector> <ul role="presentation"> <li role="presentation"> <a role="menuitem" lang="en" >English</a> </li> <li role="presentation"> <a role="menuitem" lang="de" >Deutsch</a> </li> <li role="presentation"> <a role="menuitem" lang="es" >Español</a> </li> <li role="presentation"> <a role="menuitem" lang="es_419" >Español – América Latina</a> </li> <li role="presentation"> <a role="menuitem" lang="fr" >Français</a> </li> <li role="presentation"> <a role="menuitem" lang="id" >Indonesia</a> </li> <li role="presentation"> <a role="menuitem" lang="it" >Italiano</a> </li> <li role="presentation"> <a role="menuitem" lang="pl" >Polski</a> </li> <li role="presentation"> <a role="menuitem" lang="pt_br" >Português – Brasil</a> </li> <li role="presentation"> <a role="menuitem" lang="vi" >Tiếng Việt</a> </li> <li role="presentation"> <a role="menuitem" lang="tr" >Türkçe</a> </li> <li role="presentation"> <a role="menuitem" lang="ru" >Русский</a> </li> <li role="presentation"> <a role="menuitem" lang="he" >עברית</a> </li> <li role="presentation"> <a role="menuitem" lang="ar" >العربيّة</a> </li> <li role="presentation"> <a role="menuitem" lang="fa" >فارسی</a> </li> <li role="presentation"> <a role="menuitem" lang="hi" >हिंदी</a> </li> <li role="presentation"> <a role="menuitem" lang="bn" >বাংলা</a> </li> <li role="presentation"> <a role="menuitem" lang="th" >ภาษาไทย</a> </li> <li role="presentation"> <a role="menuitem" lang="zh_cn" >中文 – 简体</a> </li> <li role="presentation"> <a role="menuitem" lang="zh_tw" >中文 – 繁體</a> </li> <li role="presentation"> <a role="menuitem" lang="ja" >日本語</a> </li> <li role="presentation"> <a role="menuitem" lang="ko" >한국어</a> </li> </ul> </devsite-language-selector> <devsite-user enable-profiles fp-auth id="devsite-user"> <span class="button devsite-top-button" aria-hidden="true" visually-hidden>Sign in</span> </devsite-user> </div> </div> </div> <div class="devsite-collapsible-section "> <div class="devsite-header-background"> <div class="devsite-doc-set-nav-row"> <devsite-tabs class="lower-tabs"> <nav class="devsite-tabs-wrapper" aria-label="Lower tabs"> <tab > <a href="https://developers.google.com/streetview" track-metadata-eventdetail="https://developers.google.com/streetview" class="devsite-tabs-content gc-analytics-event " track-type="nav" track-metadata-position="nav - home" track-metadata-module="primary nav" data-category="Site-Wide Custom Events" data-label="Tab: Home" track-name="home" > Home </a> </tab> <tab class="devsite-active"> <a href="https://developers.google.com/streetview/android" track-metadata-eventdetail="https://developers.google.com/streetview/android" class="devsite-tabs-content gc-analytics-event " track-type="nav" track-metadata-position="nav - guides" track-metadata-module="primary nav" aria-label="Guides, selected" data-category="Site-Wide Custom Events" data-label="Tab: Guides" track-name="guides" > Guides </a> </tab> </nav> </devsite-tabs> </div> </div> </div> </div> </devsite-header> <devsite-book-nav scrollbars > <div class="devsite-book-nav-filter" > <span class="filter-list-icon material-icons" aria-hidden="true"></span> <input type="text" placeholder="Filter" aria-label="Type to filter" role="searchbox"> <span class="filter-clear-button hidden" data-title="Clear filter" aria-label="Clear filter" role="button" tabindex="0"></span> </div> <nav class="devsite-book-nav devsite-nav nocontent" aria-label="Side menu"> <div class="devsite-mobile-header"> <button type="button" id="devsite-close-nav" class="devsite-header-icon-button button-flat material-icons gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Close navigation" aria-label="Close navigation"> </button> <div class="devsite-product-name-wrapper"> <a href="https://developers.google.com/streetview"> <div class="devsite-product-logo-container" size="medium" > <picture> <img class="devsite-product-logo" alt="Street View" src="https://developers.google.com/static/streetview/images/streetview_logo.png" srcset="https://developers.google.com/static/streetview/images/streetview_logo_36.png 36w, https://developers.google.com/static/streetview/images/streetview_logo_48.png 48w, https://developers.google.com/static/streetview/images/streetview_logo_72.png 72w, https://developers.google.com/static/streetview/images/streetview_logo_96.png 96w, https://developers.google.com/static/streetview/images/streetview_logo_480.png 480w, https://developers.google.com/static/streetview/images/streetview_logo_720.png 720w, https://developers.google.com/static/streetview/images/streetview_logo_856.png 856w, https://developers.google.com/static/streetview/images/streetview_logo_960.png 960w, https://developers.google.com/static/streetview/images/streetview_logo_1440.png 1440w, https://developers.google.com/static/streetview/images/streetview_logo_1920.png 1920w, https://developers.google.com/static/streetview/images/streetview_logo_2880.png 2880w" sizes="64px" loading="lazy" > </picture> </div> </a> <span class="devsite-product-name"> <ul class="devsite-breadcrumb-list" > <li class="devsite-breadcrumb-item "> <a href="https://developers.google.com/streetview" class="devsite-breadcrumb-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Upper Header" data-value="1" track-type="globalNav" track-name="breadcrumb" track-metadata-position="1" track-metadata-eventdetail="Street View" > Street View </a> </li> </ul> </span> </div> </div> <div class="devsite-book-nav-wrapper"> <div class="devsite-mobile-nav-top"> <ul class="devsite-nav-list"> <li class="devsite-nav-item"> <a href="/streetview" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Tab: Home" track-name="home" data-category="Site-Wide Custom Events" data-label="Responsive Tab: Home" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Home </span> </a> </li> <li class="devsite-nav-item"> <a href="/streetview/android" class="devsite-nav-title gc-analytics-event devsite-nav-has-children devsite-nav-active" data-category="Site-Wide Custom Events" data-label="Tab: Guides" track-name="guides" data-category="Site-Wide Custom Events" data-label="Responsive Tab: Guides" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Guides </span> <span class="devsite-nav-icon material-icons" data-icon="forward" > </span> </a> </li> </ul> </div> <div class="devsite-mobile-nav-bottom"> <ul class="devsite-nav-list" menu="_book"> <li class="devsite-nav-item devsite-nav-heading"><div class="devsite-nav-title devsite-nav-title-no-path"> <span class="devsite-nav-text" tooltip>Mobile</span> </div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/streetview/android" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /streetview/android" track-type="bookNav" track-name="click" track-metadata-eventdetail="/streetview/android" ><span class="devsite-nav-text" tooltip>Overview</span></a></li><li class="devsite-nav-item"><a href="/streetview/android/panorama" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /streetview/android/panorama" track-type="bookNav" track-name="click" track-metadata-eventdetail="/streetview/android/panorama" ><span class="devsite-nav-text" tooltip>Photo Sphere Support on Android</span></a></li><li class="devsite-nav-item devsite-nav-external"><a href="/maps/documentation/android/streetview" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /maps/documentation/android/streetview" track-type="bookNav" track-name="click" track-metadata-eventdetail="/maps/documentation/android/streetview" ><span class="devsite-nav-text" tooltip>Street View in the Maps Android API</span><span class="devsite-nav-icon material-icons" data-icon="external" data-title="External" aria-hidden="true"></span></a></li><li class="devsite-nav-item devsite-nav-external"><a href="/maps/documentation/ios-sdk/streetview" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /maps/documentation/ios-sdk/streetview" track-type="bookNav" track-name="click" track-metadata-eventdetail="/maps/documentation/ios-sdk/streetview" ><span class="devsite-nav-text" tooltip>Street View in the Maps SDK for iOS</span><span class="devsite-nav-icon material-icons" data-icon="external" data-title="External" aria-hidden="true"></span></a></li></ul></li> <li class="devsite-nav-item devsite-nav-heading"><div class="devsite-nav-title devsite-nav-title-no-path"> <span class="devsite-nav-text" tooltip>Web</span> </div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/streetview/web" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /streetview/web" track-type="bookNav" track-name="click" track-metadata-eventdetail="/streetview/web" ><span class="devsite-nav-text" tooltip>Overview</span></a></li><li class="devsite-nav-item devsite-nav-external"><a href="/maps/documentation/embed/guide#street_view_mode" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /maps/documentation/embed/guide#street_view_mode" track-type="bookNav" track-name="click" track-metadata-eventdetail="/maps/documentation/embed/guide#street_view_mode" ><span class="devsite-nav-text" tooltip>Street View in the Maps Embed API</span><span class="devsite-nav-icon material-icons" data-icon="external" data-title="External" aria-hidden="true"></span></a></li><li class="devsite-nav-item devsite-nav-external"><a href="/maps/documentation/javascript/streetview" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /maps/documentation/javascript/streetview" track-type="bookNav" track-name="click" track-metadata-eventdetail="/maps/documentation/javascript/streetview" ><span class="devsite-nav-text" tooltip>Street View in the Maps JavaScript API</span><span class="devsite-nav-icon material-icons" data-icon="external" data-title="External" aria-hidden="true"></span></a></li><li class="devsite-nav-item devsite-nav-external"><a href="/maps/documentation/streetview/intro" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /maps/documentation/streetview/intro" track-type="bookNav" track-name="click" track-metadata-eventdetail="/maps/documentation/streetview/intro" ><span class="devsite-nav-text" tooltip>Maps Street View Image API</span><span class="devsite-nav-icon material-icons" data-icon="external" data-title="External" aria-hidden="true"></span></a></li></ul></li> <li class="devsite-nav-item devsite-nav-heading"><div class="devsite-nav-title devsite-nav-title-no-path"> <span class="devsite-nav-text" tooltip>Open Standards</span> </div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/streetview/open-spherical-camera" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /streetview/open-spherical-camera" track-type="bookNav" track-name="click" track-metadata-eventdetail="/streetview/open-spherical-camera" ><span class="devsite-nav-text" tooltip>Open Spherical Camera API</span></a></li><li class="devsite-nav-item"><a href="/streetview/spherical-metadata" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /streetview/spherical-metadata" track-type="bookNav" track-name="click" track-metadata-eventdetail="/streetview/spherical-metadata" ><span class="devsite-nav-text" tooltip>Photo Sphere Metadata</span></a></li></ul></li> </ul> </div> </div> </nav> </devsite-book-nav> <section id="gc-wrapper"> <main role="main" class="devsite-main-content" has-book-nav > <devsite-content> <article class="devsite-article"> <div class="devsite-article-meta nocontent" role="navigation"> <ul class="devsite-breadcrumb-list" aria-label="Breadcrumb"> <li class="devsite-breadcrumb-item "> <a href="https://developers.google.com/" class="devsite-breadcrumb-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Breadcrumbs" data-value="1" track-type="globalNav" track-name="breadcrumb" track-metadata-position="1" track-metadata-eventdetail="" > Home </a> </li> <li class="devsite-breadcrumb-item "> <div class="devsite-breadcrumb-guillemet material-icons" aria-hidden="true"></div> <a href="https://developers.google.com/products" class="devsite-breadcrumb-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Breadcrumbs" data-value="2" track-type="globalNav" track-name="breadcrumb" track-metadata-position="2" track-metadata-eventdetail="" > Products </a> </li> <li class="devsite-breadcrumb-item "> <div class="devsite-breadcrumb-guillemet material-icons" aria-hidden="true"></div> <a href="https://developers.google.com/streetview" class="devsite-breadcrumb-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Breadcrumbs" data-value="3" track-type="globalNav" track-name="breadcrumb" track-metadata-position="3" track-metadata-eventdetail="Street View" > Street View </a> </li> <li class="devsite-breadcrumb-item "> <div class="devsite-breadcrumb-guillemet material-icons" aria-hidden="true"></div> <a href="https://developers.google.com/streetview/android" class="devsite-breadcrumb-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Breadcrumbs" data-value="4" track-type="globalNav" track-name="breadcrumb" track-metadata-position="4" track-metadata-eventdetail="" > Guides </a> </li> </ul> <devsite-thumb-rating position="header"> </devsite-thumb-rating> </div> <devsite-feedback position="header" project-name="Street View" product-id="81777" bucket="" context="Street View APIs" version="t-devsite-webserver-20241114-r00-rc02.464922260396498922" data-label="Send Feedback Button" track-type="feedback" track-name="sendFeedbackLink" track-metadata-position="header" class="nocontent" project-icon="https://developers.google.com/static/streetview/images/streetview_logo.png" project-support-url="https://developers.google.com/maps/documentation/streetview/support" > <button> Send feedback </button> </devsite-feedback> <h1 class="devsite-page-title" tabindex="-1"> Photo Sphere XMP Metadata </h1> <devsite-feature-tooltip ack-key="AckCollectionsBookmarkTooltipDismiss" analytics-category="Site-Wide Custom Events" analytics-action-show="Callout Profile displayed" analytics-action-close="Callout Profile dismissed" analytics-label="Create Collection Callout" class="devsite-page-bookmark-tooltip nocontent" dismiss-button="true" id="devsite-collections-dropdown" dismiss-button-text="Dismiss" close-button-text="Got it"> <devsite-bookmark></devsite-bookmark> <span slot="popout-heading"> Stay organized with collections </span> <span slot="popout-contents"> Save and categorize content based on your preferences. </span> </devsite-feature-tooltip> <div class="devsite-page-title-meta"><devsite-view-release-notes></devsite-view-release-notes></div> <devsite-toc class="devsite-nav" depth="2" devsite-toc-embedded > </devsite-toc> <div class="devsite-article-body clearfix "> <p>The panorama namespace described here contains properties that provide information regarding the creation and rendering of photo spheres, also sometimes referred to as panoramas, such as those created by the Photo Sphere feature in the Android 4.2 camera. The metadata should be serialized and embedded inside the photo sphere as described by the <a class href="http://www.adobe.com/products/xmp/" target="_blank">Adobe XMP</a> standard (see <a href="#references">references</a> at the end of this page).</p> <p>The namespace URI is <code translate="no" dir="ltr">http://ns.google.com/photos/1.0/panorama/</code></p> <h2 id="metadata_properties" data-text="Metadata properties" tabindex="-1">Metadata properties</h2> <p>The diagrams and table below show the photo sphere properties encapsulated by the GPano Parameters. When editing and viewing photo spheres, please be sure to verify and update the metadata accordingly as described later in this document. When specifying the pose and initial heading fields, please be sure to follow the <a href="#euler_overview">Euler angle conventions</a> discussed later in this document.</p> <p>Note that Google products support spherical projections only. Additional projections are currently supported only by other parties.</p> <h3 id="spherical_projections" data-text="Spherical projections" tabindex="-1">Spherical projections</h3> <p><img src="/static/streetview/images/XMP_pano_pixels.png"></p> <h3 id="cylindrical_projections" data-text="Cylindrical projections" tabindex="-1">Cylindrical projections</h3> <p><img src="/static/streetview/images/cylindrical_xmp_pixels.png"></p> <p>Note that if the top of a cylindrical image is above the horizon, CroppedAreaTopPixels must be negative. A value of 0 for CroppedAreaTopPixels will place the top of the image at the horizon. A positive value of CroppedAreaTopPixels places the top of the image below the horizon.</p> <h3 id="gpano_parameter_reference" data-text="GPano parameter reference" tabindex="-1">GPano parameter reference</h3> <table cellpadding="0" cellspacing="0" class="c21"> <tbody> <tr> <th>Name</th> <th>Type</th> <th>Required</th> <th>Default value<br/> (viewer assumed)</th> <th>Property description</th> <th>Action required if image is modified</th> </tr> <tr> <td>GPano:UsePanoramaViewer</td> <td>Boolean</td> <td>No</td> <td>True</td> <td>Whether to show this image in a photo sphere viewer rather than as a normal flat image. This may be specified based on user preferences or by the stitching software. The application displaying or ingesting the image may choose to ignore this.</td> <td>scale/crop:<br/>No change. An application may decide to switch this to False if the field of view falls below a certain value.</td> </tr> <tr> <td>GPano:CaptureSoftware</td> <td>String</td> <td>No</td> <td>n/a</td> <td>If capture was done using an application on a mobile device, such as an Android phone, the name of the application that was used (such as &ldquo;Photo Sphere&rdquo;). This should be left blank if source images were captured manually, such as by using a DSLR on a tripod.</td> <td>n/a</td> </tr> <tr> <td>GPano:StitchingSoftware</td> <td>String</td> <td>No</td> <td>n/a</td> <td>The software that was used to create the final photo sphere. This may sometimes be the same value as that of &nbsp;GPano:CaptureSoftware.</td> <td>n/a</td> </tr> <tr> <td>GPano:ProjectionType</td> <td>Open Choice of Text</td> <td>Yes</td> <td> <p>equirectangular</td> <td>Projection type used in the image file. Google products currently support the value equirectangular only.</td> <td>scale/crop: No change.</td> </tr> <tr> <td>GPano:PoseHeadingDegrees</td> <td>Real</td> <td>No, but is required for display on Google Maps</td> <td>n/a</td> <td>Compass heading, measured in degrees clockwise from North, for the center the image. Value must be &gt;= 0 and &lt; 360.</td> <td>scale/crop: No change.</td> </tr> <tr> <td>GPano:PosePitchDegrees</td> <td>Real</td> <td>No</td> <td>0</td> <td>Pitch, measured in degrees above the horizon, for the center in the image. Value must be &gt;= -90 and &lt;= 90.</td> <td>scale/crop: No change.</td> </tr> <tr> <td>GPano:PoseRollDegrees</td> <td>Real</td> <td>No</td> <td>0</td> <td>Roll, measured in degrees, of the image where level with the horizon is 0. As roll increases, the horizon rotates counterclockwise in the image. Value must be &gt; -180 and &lt;= 180.</td> <td>scale/crop: No change.</td> </tr> <tr> <td>GPano:InitialViewHeadingDegrees</td> <td>Integer</td> <td>No</td> <td>0</td> <td>The heading angle of the initial view in degrees clockwise from real world North, not relative to the pano center.</td> <td>scale/crop: No change.</td> </tr> <tr> <td>GPano:InitialViewPitchDegrees</td> <td>Integer</td> <td>No</td> <td>0</td> <td>The pitch angle of the initial view in degrees above the real world horizon, not relative to the pano center.</td> <td>scale/crop: No change.</td> </tr> <tr> <td>GPano:InitialViewRollDegrees</td> <td>Integer</td> <td>No</td> <td>0</td> <td>The roll angle of the initial view in degrees where level with the real world horizon is 0. As roll increases, the horizon rotates counterclockwise in the view.</td> <td>scale/crop: No change.</td> </tr> <tr> <td>GPano:InitialHorizontalFOVDegrees</td> <td>Real</td> <td>No</td> <td>n/a</td> <td>The initial horizontal field of view that the viewer should display (in degrees). This is similar to a zoom level.</td> <td>n/a</td> </tr> <tr> <td>GPano:InitialVerticalFOVDegrees</td> <td>Real</td> <td>No</td> <td>n/a</td> <td>The initial vertical field of view that the viewer should display (in degrees). This is similar to a zoom level. If both GPano:InitialHorizontalFOVDegrees and GPano:InitialVerticalFOVDegrees are present, GPano:InitialHorizontalFOVDegrees takes precedence. Use only InitialVerticalFOVDegrees if your content is to be displayed in multiple aspect ratios, and you would prefer the vertical field of view to remain constant while the horizontal field of view may change. Google products currently do not support this field.</td> <td>n/a</td> </tr> <tr> <td>GPano:FirstPhotoDate</td> <td>Date</td> <td>No</td> <td>n/a</td> <td>Date and time for the first image created in the photo sphere.</td> <td>scale/crop: No change.</td> </tr> <tr> <td>GPano:LastPhotoDate</td> <td>Date</td> <td>No</td> <td>n/a</td> <td>Date and time for the last image created in the photo sphere.</td> <td>scale/crop: No change.</td> </tr> <tr> <td>GPano:SourcePhotosCount</td> <td>Integer</td> <td>No</td> <td>n/a</td> <td>Number of source images used to create the photo sphere.</td> <td>scale/crop: No change.</td> </tr> <tr> <td>GPano:ExposureLockUsed</td> <td>Boolean</td> <td>No</td> <td>n/a</td> <td>When individual source photographs were captured, whether or not the camera&rsquo;s exposure setting was locked. </td> <td>n/a</td> </tr> <tr> <td>GPano:CroppedAreaImageWidthPixels</td> <td>Integer</td> <td>Yes</td> <td>n/a</td> <td>Original width in pixels of the image (equal to the actual image&rsquo;s width for unedited images). See diagrams above.</td> <td>scale/crop: This property needs to be updated to reflect the new size of the image.</td> </tr> <tr> <td>GPano:CroppedAreaImageHeightPixels</td> <td>Integer</td> <td>Yes</td> <td>n/a</td> <td>Original height in pixels of the image (equal to the actual image&rsquo;s height for unedited images). See diagrams above.</td> <td>scale/crop: This property needs to be updated to reflect the new size of the image.</td> </tr> <tr> <td>GPano:FullPanoWidthPixels</td> <td>Integer</td> <td>Yes</td> <td>n/a</td> <td>Original full width from which the image was cropped. If only a partial photo sphere was captured, this specifies the width of what the full photo sphere would have been. See diagrams above.</td> <td>crop: No change.<br/>scale: This properly needs to be scaled accordingly.</td> </tr> <tr> <td>GPano:FullPanoHeightPixels</td> <td>Integer</td> <td>Yes</td> <td>n/a</td> <td>Original full height from which the image was cropped. If only a partial photo sphere was captured, this specifies the height of what the full photo sphere would have been. See diagrams above.</td> <td>crop: No change.<br/>scale: This properly needs to be scaled accordingly.</td> </tr> <tr> <td>GPano:CroppedAreaLeftPixels</td> <td>Integer</td> <td>Yes</td> <td>n/a</td> <td>Column where the left edge of the image was cropped from the full sized photo sphere. See diagrams above.</td> <td>crop: If the left crop of the image is changed, this value must be updated.<br/>scale: This properly needs to be scaled accordingly.</td> </tr> <tr> <td>GPano:CroppedAreaTopPixels</td> <td>Integer</td> <td>Yes</td> <td>n/a</td> <td>Row where the top edge of the image was cropped from the full sized photo sphere. See diagrams above.</td> <td>crop: If the top crop of the image is changed, this value must be updated.<br/>scale: This properly needs to be scaled accordingly.</td> </tr> <tr> <td>GPano:InitialCameraDolly</td> <td>Real</td> <td>No</td> <td>0</td> <td>This optional parameter moves the virtual camera position along the line of sight, away from the center of the photo sphere. A rear surface position is represented by the value -1.0, while a front surface position is represented by 1.0. For normal viewing, this parameter should be set to 0.</td> <td>n/a</td> </tr> </tbody> </table> <h2 id="example_of_a_full_photo_sphere" data-text="Example of a full photo sphere" tabindex="-1">Example of a full photo sphere</h2> <p>Non-programmers can add the metadata example below to their existing full photo spheres (360 degrees x 180 degrees) with only small modifications. This can be done in image editing products, such as Adobe Photoshop.</p> <ol> <li>change any occurrences of 4000 and 2000 to match the corresponding width and height of your image in pixels</li> <li>update PoseHeadingDegrees if you want Google Maps to be able to show your photo sphere; otherwise, you may optionally remove this parameter</li> <li>update or remove optional parameters (as listed above)</li> </ol> <pre class="prettyprint" translate="no" dir="ltr"> &lt;rdf:Description rdf:about="" xmlns:GPano="http://ns.google.com/photos/1.0/panorama/"&gt; &lt;GPano:UsePanoramaViewer&gt;True&lt;/GPano:UsePanoramaViewer&gt; &lt;GPano:CaptureSoftware&gt;Photo Sphere&lt;/GPano:CaptureSoftware&gt; &lt;GPano:StitchingSoftware&gt;Photo Sphere&lt;/GPano:StitchingSoftware&gt; &lt;GPano:ProjectionType&gt;equirectangular&lt;/GPano:ProjectionType&gt; &lt;GPano:PoseHeadingDegrees&gt;350.0&lt;/GPano:PoseHeadingDegrees&gt; &lt;GPano:InitialViewHeadingDegrees&gt;90.0&lt;/GPano:InitialViewHeadingDegrees&gt; &lt;GPano:InitialViewPitchDegrees&gt;0.0&lt;/GPano:InitialViewPitchDegrees&gt; &lt;GPano:InitialViewRollDegrees&gt;0.0&lt;/GPano:InitialViewRollDegrees&gt; &lt;GPano:InitialHorizontalFOVDegrees&gt;75.0&lt;/GPano:InitialHorizontalFOVDegrees&gt; &lt;GPano:CroppedAreaLeftPixels&gt;0&lt;/GPano:CroppedAreaLeftPixels&gt; &lt;GPano:CroppedAreaTopPixels&gt;0&lt;/GPano:CroppedAreaTopPixels&gt; &lt;GPano:CroppedAreaImageWidthPixels&gt;4000&lt;/GPano:CroppedAreaImageWidthPixels&gt; &lt;GPano:CroppedAreaImageHeightPixels&gt;2000&lt;/GPano:CroppedAreaImageHeightPixels&gt; &lt;GPano:FullPanoWidthPixels&gt;4000&lt;/GPano:FullPanoWidthPixels&gt; &lt;GPano:FullPanoHeightPixels&gt;2000&lt;/GPano:FullPanoHeightPixels&gt; &lt;GPano:FirstPhotoDate&gt;2012-11-07T21:03:13.465Z&lt;/GPano:FirstPhotoDate&gt; &lt;GPano:LastPhotoDate&gt;2012-11-07T21:04:10.897Z&lt;/GPano:LastPhotoDate&gt; &lt;GPano:SourcePhotosCount&gt;50&lt;/GPano:SourcePhotosCount&gt; &lt;GPano:ExposureLockUsed&gt;False&lt;/GPano:ExposureLockUsed&gt; &lt;/rdf:Description&gt; </pre> <h2 id="example_of_a_partial_photo_sphere" data-text="Example of a partial photo sphere" tabindex="-1">Example of a partial photo sphere</h2> <pre class="prettyprint" translate="no" dir="ltr"> &lt;rdf:Description rdf:about="" xmlns:GPano="http://ns.google.com/photos/1.0/panorama/"&gt; &lt;GPano:UsePanoramaViewer&gt;True&lt;/GPano:UsePanoramaViewer&gt; &lt;GPano:CaptureSoftware&gt;Photo Sphere&lt;/GPano:CaptureSoftware&gt; &lt;GPano:StitchingSoftware&gt;Photo Sphere&lt;/GPano:StitchingSoftware&gt; &lt;GPano:ProjectionType&gt;equirectangular&lt;/GPano:ProjectionType&gt; &lt;GPano:PoseHeadingDegrees&gt;350.0&lt;/GPano:PoseHeadingDegrees&gt; &lt;GPano:InitialViewHeadingDegrees&gt;90.0&lt;/GPano:InitialViewHeadingDegrees&gt; &lt;GPano:InitialViewPitchDegrees&gt;0.0&lt;/GPano:InitialViewPitchDegrees&gt; &lt;GPano:InitialViewRollDegrees&gt;0.0&lt;/GPano:InitialViewRollDegrees&gt; &lt;GPano:InitialHorizontalFOVDegrees&gt;75.0&lt;/GPano:InitialHorizontalFOVDegrees&gt; &lt;GPano:CroppedAreaLeftPixels&gt;90&lt;/GPano:CroppedAreaLeftPixels&gt; &lt;GPano:CroppedAreaTopPixels&gt;128&lt;/GPano:CroppedAreaTopPixels&gt; &lt;GPano:CroppedAreaImageWidthPixels&gt;2300&lt;/GPano:CroppedAreaImageWidthPixels&gt; &lt;GPano:CroppedAreaImageHeightPixels&gt;1042&lt;/GPano:CroppedAreaImageHeightPixels&gt; &lt;GPano:FullPanoWidthPixels&gt;4000&lt;/GPano:FullPanoWidthPixels&gt; &lt;GPano:FullPanoHeightPixels&gt;2000&lt;/GPano:FullPanoHeightPixels&gt; &lt;GPano:FirstPhotoDate&gt;2012-11-07T21:03:13.465Z&lt;/GPano:FirstPhotoDate&gt; &lt;GPano:LastPhotoDate&gt;2012-11-07T21:04:10.897Z&lt;/GPano:LastPhotoDate&gt; &lt;GPano:SourcePhotosCount&gt;50&lt;/GPano:SourcePhotosCount&gt; &lt;GPano:ExposureLockUsed&gt;False&lt;/GPano:ExposureLockUsed&gt; &lt;/rdf:Description&gt; </pre> <h2 id="robustness_to_image_editing" data-text="Robustness to image editing" tabindex="-1">Robustness to image editing</h2> <p>To be robust, programs that display photo spheres in a viewer should check if the original photo sphere has been scaled by an application without updating the metadata. This can be done in the following steps:</p> <ol start="1"> <li>ensure that CroppedAreaImageWidthPixels tag is equal to the actual image width </li> <li>ensure that CroppedAreaImageHeightPixels tag is equal to the actual image height</li> <li>if step 1 or 2 fails, check if the aspect ratio of the image has been preserved</li> <li>if step 3 fails, do not display the image as a photo sphere as it has been transformed in an incompatible manner that will introduce bad distortions</li> <li>if step 3 passes, the aspect ratio is equivalent and all of the following associated tag values should be scaled to fit the new image size:<br> CroppedAreaImageWidthPixels, CroppedAreaImageHeightPixels, FullPanoWidthPixels, FullPanoHeightPixels, CroppedAreaLeftPixels, CroppedAreaRightPixels.</li> </ol> <h2 id="euler_overview" data-text="Overview of Euler Angles" tabindex="-1">Overview of Euler Angles</h2> <p>The orientation of the photo sphere in the world frame is defined by Euler angles. Euler angles can be defined in many ways. To be correct, a program must strictly follow the Euler angle conventions described here.</p> <p>The position above the earth&rsquo;s surface defines a fixed &quot;local frame&quot; XYZ, where Z is up and orthogonal to the earth&rsquo;s surface, X is true east, and Y is true north. The orientation is defined relative to this fixed &quot;local frame&quot;, and the Euler angles are rotations around these fixed XYZ axes. &nbsp;Pose orientation is therefore undefined at the poles. This means that a photo sphere with angles (0, 0, 0) will be oriented such that the center pixel faces due north with the equator of the photo sphere parallel with the earth&rsquo;s surface.</p> <p>The Euler angles provide a mapping from points in the (rotated) &quot;photo sphere frame&quot; to points in the (fixed) &quot;local frame&quot;: <br> &nbsp;<br> A rotation matrix is constructed from the Euler angles as follows (it is important to preserve this ordering):</p> <p style="font-family:Courier New;">R = R_Z(-heading) * R_X(pitch) * R_Y(roll)</p> <p>where: R_*(t) is a right-handed rotation around the named axis:</p> <p style="font-family:Courier New;">&nbsp; &nbsp; R_Z(angle) = [ cos(angle), -sin(angle), &nbsp;0<br> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;sin(angle), &nbsp;cos(angle), &nbsp;0<br> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;0, &nbsp; &nbsp; &nbsp; 0, &nbsp;1 ]<br> &nbsp;<br> &nbsp; &nbsp; R_X(angle) = [ 1, &nbsp; &nbsp; &nbsp; 0, &nbsp; &nbsp; &nbsp;0,<br> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;0, &nbsp;cos(angle), -sin(angle),<br> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;0, &nbsp;sin(angle), &nbsp;cos(angle) ]<br> &nbsp;<br> &nbsp; &nbsp; R_Y(angle) = [ cos(angle), &nbsp;0, &nbsp;sin(angle),<br> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;0, &nbsp;1, &nbsp; &nbsp; &nbsp; 0,<br> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;-sin(angle), &nbsp;0, &nbsp;cos(angle) ]</p> <p>and where: Z = Up, X = East, Y = North.</p> <p>It is important to preserve this ordering:<br /> <p style="font-family:Courier New;">R = R_Z(-heading) * R_X(pitch) * R_Y(roll)</p> <p>as rotations are not commutative.</p> <p>Note that the heading angle is the same as a standard compass heading.</p> <h2 id="references" data-text="References" tabindex="-1">References</h2> <p>Adobe XMP standard: <a href="http://www.adobe.com/devnet/xmp.html" target="_blank">http://www.adobe.com/devnet/xmp.html</a></p> </div> <devsite-recommendations display="in-page" hidden yield> </devsite-recommendations> <devsite-thumb-rating position="footer"> </devsite-thumb-rating> <devsite-feedback position="footer" project-name="Street View" product-id="81777" bucket="" context="Street View APIs" version="t-devsite-webserver-20241114-r00-rc02.464922260396498922" data-label="Send Feedback Button" track-type="feedback" track-name="sendFeedbackLink" track-metadata-position="footer" class="nocontent" project-icon="https://developers.google.com/static/streetview/images/streetview_logo.png" project-support-url="https://developers.google.com/maps/documentation/streetview/support" > <button> Send feedback </button> </devsite-feedback> <devsite-recommendations id="recommendations-link" yield></devsite-recommendations> <div class="devsite-floating-action-buttons"> </div> </article> <devsite-content-footer class="nocontent"> <p>Except as otherwise noted, the content of this page is licensed under the <a href="https://creativecommons.org/licenses/by/4.0/">Creative Commons Attribution 4.0 License</a>, and code samples are licensed under the <a href="https://www.apache.org/licenses/LICENSE-2.0">Apache 2.0 License</a>. For details, see the <a href="https://developers.google.com/site-policies">Google Developers Site Policies</a>. Java is a registered trademark of Oracle and/or its affiliates.</p> <p>Last updated 2024-10-09 UTC.</p> </devsite-content-footer> <devsite-notification > </devsite-notification> <div class="devsite-content-data"> <template class="devsite-thumb-rating-feedback"> <devsite-feedback position="thumb-rating" project-name="Street View" product-id="81777" bucket="" context="Street View APIs" version="t-devsite-webserver-20241114-r00-rc02.464922260396498922" data-label="Send Feedback Button" track-type="feedback" track-name="sendFeedbackLink" track-metadata-position="thumb-rating" class="nocontent" project-icon="https://developers.google.com/static/streetview/images/streetview_logo.png" project-support-url="https://developers.google.com/maps/documentation/streetview/support" > <button> Need to tell us more? </button> </devsite-feedback> </template> <template class="devsite-content-data-template"> [[["Easy to understand","easyToUnderstand","thumb-up"],["Solved my problem","solvedMyProblem","thumb-up"],["Other","otherUp","thumb-up"]],[["Missing the information I need","missingTheInformationINeed","thumb-down"],["Too complicated / too many steps","tooComplicatedTooManySteps","thumb-down"],["Out of date","outOfDate","thumb-down"],["Samples / code issue","samplesCodeIssue","thumb-down"],["Other","otherDown","thumb-down"]],["Last updated 2024-10-09 UTC."],[],[]] </template> </div> </devsite-content> </main> <devsite-footer-promos class="devsite-footer"> </devsite-footer-promos> <devsite-footer-linkboxes class="devsite-footer"> <nav class="devsite-footer-linkboxes nocontent" aria-label="Footer links"> <ul class="devsite-footer-linkboxes-list"> <li class="devsite-footer-linkbox "> <h3 class="devsite-footer-linkbox-heading no-link">Connect</h3> <ul class="devsite-footer-linkbox-list"> <li class="devsite-footer-linkbox-item"> <a href="//googledevelopers.blogspot.com" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 1)" > Blog </a> </li> <li class="devsite-footer-linkbox-item"> <a href="https://www.instagram.com/googlefordevs/" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 2)" > Instagram </a> </li> <li class="devsite-footer-linkbox-item"> <a href="https://www.linkedin.com/showcase/googledevelopers/" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 3)" > LinkedIn </a> </li> <li class="devsite-footer-linkbox-item"> <a href="//twitter.com/googledevs" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 4)" > X (Twitter) </a> </li> <li class="devsite-footer-linkbox-item"> <a href="//www.youtube.com/user/GoogleDevelopers" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 5)" > YouTube </a> </li> </ul> </li> <li class="devsite-footer-linkbox "> <h3 class="devsite-footer-linkbox-heading no-link">Programs</h3> <ul class="devsite-footer-linkbox-list"> <li class="devsite-footer-linkbox-item"> <a href="//www.womentechmakers.com" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 1)" > Women Techmakers </a> </li> <li class="devsite-footer-linkbox-item"> <a href="/community/gdg" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 2)" > Google Developer Groups </a> </li> <li class="devsite-footer-linkbox-item"> <a href="/community/experts" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 3)" > Google Developer Experts </a> </li> <li class="devsite-footer-linkbox-item"> <a href="/community/accelerators" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 4)" > Accelerators </a> </li> <li class="devsite-footer-linkbox-item"> <a href="/community/gdsc" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 5)" > Google Developer Student Clubs </a> </li> </ul> </li> <li class="devsite-footer-linkbox "> <h3 class="devsite-footer-linkbox-heading no-link">Developer consoles</h3> <ul class="devsite-footer-linkbox-list"> <li class="devsite-footer-linkbox-item"> <a href="//console.developers.google.com" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 1)" > Google API Console </a> </li> <li class="devsite-footer-linkbox-item"> <a href="//console.cloud.google.com" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 2)" > Google Cloud Platform Console </a> </li> <li class="devsite-footer-linkbox-item"> <a href="//play.google.com/apps/publish" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 3)" > Google Play Console </a> </li> <li class="devsite-footer-linkbox-item"> <a href="//console.firebase.google.com" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 4)" > Firebase Console </a> </li> <li class="devsite-footer-linkbox-item"> <a href="//console.actions.google.com" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 5)" > Actions on Google Console </a> </li> <li class="devsite-footer-linkbox-item"> <a href="//cast.google.com/publish" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 6)" > Cast SDK Developer Console </a> </li> <li class="devsite-footer-linkbox-item"> <a href="//chrome.google.com/webstore/developer/dashboard" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 7)" > Chrome Web Store Dashboard </a> </li> <li class="devsite-footer-linkbox-item"> <a href="//console.home.google.com" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 8)" > Google Home Developer Console </a> </li> </ul> </li> </ul> </nav> </devsite-footer-linkboxes> <devsite-footer-utility class="devsite-footer"> <div class="devsite-footer-utility nocontent"> <nav class="devsite-footer-sites" aria-label="Other Google Developers websites"> <a href="https://developers.google.com/" class="devsite-footer-sites-logo-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Google Developers Link"> <picture> <img class="devsite-footer-sites-logo" src="https://www.gstatic.com/devrel-devsite/prod/v870e399c64f7c43c99a3043db4b3a74327bb93d0914e84a0c3dba90bbfd67625/developers/images/lockup-google-for-developers.svg" loading="lazy" alt="Google Developers"> </picture> </a> <ul class="devsite-footer-sites-list"> <li class="devsite-footer-sites-item"> <a href="//developer.android.com" class="devsite-footer-sites-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Android Link" > Android </a> </li> <li class="devsite-footer-sites-item"> <a href="//developer.chrome.com/home" class="devsite-footer-sites-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Chrome Link" > Chrome </a> </li> <li class="devsite-footer-sites-item"> <a href="//firebase.google.com" class="devsite-footer-sites-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Firebase Link" > Firebase </a> </li> <li class="devsite-footer-sites-item"> <a href="//cloud.google.com" class="devsite-footer-sites-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Google Cloud Platform Link" > Google Cloud Platform </a> </li> <li class="devsite-footer-sites-item"> <a href="//ai.google.dev/" class="devsite-footer-sites-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Google AI Link" > Google AI </a> </li> <li class="devsite-footer-sites-item"> <a href="/products" class="devsite-footer-sites-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer All products Link" > All products </a> </li> </ul> </nav> <nav class="devsite-footer-utility-links" aria-label="Utility links"> <ul class="devsite-footer-utility-list"> <li class="devsite-footer-utility-item "> <a class="devsite-footer-utility-link gc-analytics-event" href="/terms/site-terms" data-category="Site-Wide Custom Events" data-label="Footer Terms link" > Terms </a> </li> <li class="devsite-footer-utility-item "> <a class="devsite-footer-utility-link gc-analytics-event" href="//policies.google.com/privacy" data-category="Site-Wide Custom Events" data-label="Footer Privacy link" > Privacy </a> </li> <li class="devsite-footer-utility-item glue-cookie-notification-bar-control"> <a class="devsite-footer-utility-link gc-analytics-event" href="#" data-category="Site-Wide Custom Events" data-label="Footer Manage cookies link" aria-hidden="true" > Manage cookies </a> </li> <li class="devsite-footer-utility-item devsite-footer-utility-button"> <span class="devsite-footer-utility-description">Sign up for the Google for Developers newsletter</span> <a class="devsite-footer-utility-link gc-analytics-event" href="/newsletter/subscribe" data-category="Site-Wide Custom Events" data-label="Footer Subscribe link" > Subscribe </a> </li> </ul> <devsite-language-selector> <ul role="presentation"> <li role="presentation"> <a role="menuitem" lang="en" >English</a> </li> <li role="presentation"> <a role="menuitem" lang="de" >Deutsch</a> </li> <li role="presentation"> <a role="menuitem" lang="es" >Español</a> </li> <li role="presentation"> <a role="menuitem" lang="es_419" >Español – América Latina</a> </li> <li role="presentation"> <a role="menuitem" lang="fr" >Français</a> </li> <li role="presentation"> <a role="menuitem" lang="id" >Indonesia</a> </li> <li role="presentation"> <a role="menuitem" lang="it" >Italiano</a> </li> <li role="presentation"> <a role="menuitem" lang="pl" >Polski</a> </li> <li role="presentation"> <a role="menuitem" lang="pt_br" >Português – Brasil</a> </li> <li role="presentation"> <a role="menuitem" lang="vi" >Tiếng Việt</a> </li> <li role="presentation"> <a role="menuitem" lang="tr" >Türkçe</a> </li> <li role="presentation"> <a role="menuitem" lang="ru" >Русский</a> </li> <li role="presentation"> <a role="menuitem" lang="he" >עברית</a> </li> <li role="presentation"> <a role="menuitem" lang="ar" >العربيّة</a> </li> <li role="presentation"> <a role="menuitem" lang="fa" >فارسی</a> </li> <li role="presentation"> <a role="menuitem" lang="hi" >हिंदी</a> </li> <li role="presentation"> <a role="menuitem" lang="bn" >বাংলা</a> </li> <li role="presentation"> <a role="menuitem" lang="th" >ภาษาไทย</a> </li> <li role="presentation"> <a role="menuitem" lang="zh_cn" >中文 – 简体</a> </li> <li role="presentation"> <a role="menuitem" lang="zh_tw" >中文 – 繁體</a> </li> <li role="presentation"> <a role="menuitem" lang="ja" >日本語</a> </li> <li role="presentation"> <a role="menuitem" lang="ko" >한국어</a> </li> </ul> </devsite-language-selector> </nav> </div> </devsite-footer-utility> <devsite-panel></devsite-panel> <devsite-concierge data-info-panel data-ai-panel data-api-explorer-panel > </devsite-concierge> </section></section> <devsite-sitemask></devsite-sitemask> <devsite-snackbar></devsite-snackbar> <devsite-tooltip ></devsite-tooltip> <devsite-heading-link></devsite-heading-link> <devsite-analytics> <script type="application/json" analytics>[{&#34;dimensions&#34;: {&#34;dimension3&#34;: false, &#34;dimension6&#34;: &#34;en&#34;, &#34;dimension1&#34;: &#34;Signed out&#34;, &#34;dimension5&#34;: &#34;en&#34;, &#34;dimension4&#34;: &#34;Street View&#34;, &#34;dimension11&#34;: false}, &#34;gaid&#34;: &#34;UA-24532603-1&#34;, &#34;metrics&#34;: {&#34;ratings_count&#34;: &#34;metric2&#34;, &#34;ratings_value&#34;: &#34;metric1&#34;}, &#34;purpose&#34;: 1}]</script> <script type="application/json" tag-management>{&#34;at&#34;: &#34;True&#34;, &#34;ga4&#34;: [{&#34;id&#34;: &#34;G-272J68FCRF&#34;, &#34;purpose&#34;: 1}], &#34;ga4p&#34;: [{&#34;id&#34;: &#34;G-272J68FCRF&#34;, &#34;purpose&#34;: 1}], &#34;gtm&#34;: [], &#34;parameters&#34;: {&#34;internalUser&#34;: &#34;False&#34;, &#34;language&#34;: {&#34;machineTranslated&#34;: &#34;False&#34;, &#34;requested&#34;: &#34;en&#34;, &#34;served&#34;: &#34;en&#34;}, &#34;pageType&#34;: &#34;article&#34;, &#34;projectName&#34;: &#34;Street View&#34;, &#34;signedIn&#34;: &#34;False&#34;, &#34;tenant&#34;: &#34;developers&#34;, &#34;recommendations&#34;: {&#34;sourcePage&#34;: &#34;&#34;, &#34;sourceType&#34;: 0, &#34;sourceRank&#34;: 0, &#34;sourceIdenticalDescriptions&#34;: 0, &#34;sourceTitleWords&#34;: 0, &#34;sourceDescriptionWords&#34;: 0, &#34;experiment&#34;: &#34;&#34;}, &#34;experiment&#34;: {&#34;ids&#34;: &#34;&#34;}}}</script> </devsite-analytics> <devsite-badger></devsite-badger> <script nonce="1z42SmlHRr0U+3/1hASzjrTPfgZskb"> (function(d,e,v,s,i,t,E){d['GoogleDevelopersObject']=i; t=e.createElement(v);t.async=1;t.src=s;E=e.getElementsByTagName(v)[0]; E.parentNode.insertBefore(t,E);})(window, document, 'script', 'https://www.gstatic.com/devrel-devsite/prod/v870e399c64f7c43c99a3043db4b3a74327bb93d0914e84a0c3dba90bbfd67625/developers/js/app_loader.js', '[1,"en",null,"/js/devsite_app_module.js","https://www.gstatic.com/devrel-devsite/prod/v870e399c64f7c43c99a3043db4b3a74327bb93d0914e84a0c3dba90bbfd67625","https://www.gstatic.com/devrel-devsite/prod/v870e399c64f7c43c99a3043db4b3a74327bb93d0914e84a0c3dba90bbfd67625/developers","https://developers-dot-devsite-v2-prod.appspot.com",null,null,["/_pwa/developers/manifest.json","https://www.gstatic.com/devrel-devsite/prod/v870e399c64f7c43c99a3043db4b3a74327bb93d0914e84a0c3dba90bbfd67625/images/video-placeholder.svg","https://www.gstatic.com/devrel-devsite/prod/v870e399c64f7c43c99a3043db4b3a74327bb93d0914e84a0c3dba90bbfd67625/developers/images/favicon-new.png","https://fonts.googleapis.com/css?family=Google+Sans:400,500|Roboto:400,400italic,500,500italic,700,700italic|Roboto+Mono:400,500,700&display=swap"],1,null,[1,6,8,12,14,17,21,25,50,52,63,70,75,76,80,87,91,92,93,97,98,100,101,102,103,104,105,107,108,109,110,112,113,117,118,120,122,124,125,126,127,129,130,131,132,133,134,135,136,138,140,141,147,148,149,151,152,156,157,158,159,161,163,164,168,169,170,179,180,182,183,186,191,193,196],"AIzaSyAP-jjEJBzmIyKR4F-3XITp8yM9T1gEEI8","AIzaSyB6xiKGDR5O3Ak2okS4rLkauxGUG7XP0hg","developers.google.com","AIzaSyAQk0fBONSGUqCNznf6Krs82Ap1-NV6J4o","AIzaSyCCxcqdrZ_7QMeLCRY20bh_SXdAYqy70KY",null,null,null,["Cloud__enable_free_trial_server_call","Profiles__enable_recognition_badges","Cloud__enable_legacy_calculator_redirect","MiscFeatureFlags__emergency_css","MiscFeatureFlags__enable_explain_this_code","MiscFeatureFlags__enable_firebase_utm","Search__enable_ai_search_summaries_restricted","Cloud__enable_llm_concierge_chat","Profiles__enable_dashboard_curated_recommendations","Search__enable_ai_search_summaries","Significatio__enable_by_tenant","TpcFeatures__enable_required_headers","Profiles__enable_release_notes_notifications","Profiles__enable_profile_collections","Search__enable_dynamic_content_confidential_banner","Profiles__enable_page_saving","Cloud__enable_cloudx_ping","MiscFeatureFlags__enable_variable_operator","Profiles__require_profile_eligibility_for_signin","Analytics__enable_clearcut_logging","Profiles__enable_awarding_url","EngEduTelemetry__enable_engedu_telemetry","Concierge__enable_concierge_restricted","MiscFeatureFlags__enable_project_variables","Cloud__enable_cloud_facet_chat","Profiles__enable_complete_playlist_endpoint","Experiments__reqs_query_experiments","Concierge__enable_pushui","Search__enable_page_map","Profiles__enable_developer_profiles_callout","DevPro__enable_cloud_innovators_plus","Search__enable_suggestions_from_borg","Profiles__enable_completecodelab_endpoint","MiscFeatureFlags__developers_footer_dark_image","TpcFeatures__enable_mirror_tenant_redirects","Cloud__enable_cloudx_experiment_ids","MiscFeatureFlags__enable_view_transitions","CloudShell__cloud_shell_button","Cloud__enable_cloud_shell","BookNav__enable_tenant_cache_key","Cloud__enable_cloud_dlp_service","Profiles__enable_public_developer_profiles","Cloud__enable_cloud_shell_fte_user_flow","Search__enable_ai_eligibility_checks","Concierge__enable_concierge","CloudShell__cloud_code_overflow_menu","MiscFeatureFlags__developers_footer_image","DevPro__enable_developer_subscriptions"],null,null,"AIzaSyBLEMok-5suZ67qRPzx0qUtbnLmyT_kCVE","https://developerscontentserving-pa.clients6.google.com","AIzaSyCM4QpTRSqP5qI4Dvjt4OAScIN8sOUlO-k","https://developerscontentsearch-pa.clients6.google.com",1,4,null,"https://developerprofiles-pa.clients6.google.com",[1,"developers","Google for Developers","developers.google.com",null,"developers-dot-devsite-v2-prod.appspot.com",null,null,[1,1,[1],null,null,null,null,null,null,null,null,[1],null,null,null,null,null,null,[1],[1,null,null,[1,20],"/recommendations/information"],null,null,null,[1,1,1],[1,1,null,1,1]],null,[null,null,null,null,null,null,"/images/lockup-new.svg","/images/touchicon-180-new.png",null,null,null,null,1,null,null,null,null,null,null,null,null,1,null,null,null,"/images/lockup-dark-theme-new.svg",[]],[],null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[6,1,14,15,20,22,23,29,32,36],null,[[null,null,null,[3,7,10,2,39,17,4,32,24,11,12,13,34,15,25],null,null,[1,[["docType","Choose a content type",[["Tutorial",null,null,null,null,null,null,null,null,"Tutorial"],["Guide",null,null,null,null,null,null,null,null,"Guide"],["Sample",null,null,null,null,null,null,null,null,"Sample"]]],["product","Choose a product",[["Android",null,null,null,null,null,null,null,null,"Android"],["ARCore",null,null,null,null,null,null,null,null,"ARCore"],["ChromeOS",null,null,null,null,null,null,null,null,"ChromeOS"],["Firebase",null,null,null,null,null,null,null,null,"Firebase"],["Flutter",null,null,null,null,null,null,null,null,"Flutter"],["Assistant",null,null,null,null,null,null,null,null,"Google Assistant"],["GoogleCloud",null,null,null,null,null,null,null,null,"Google Cloud"],["GoogleMapsPlatform",null,null,null,null,null,null,null,null,"Google Maps Platform"],["GooglePay",null,null,null,null,null,null,null,null,"Google Pay & Google Wallet"],["GooglePlay",null,null,null,null,null,null,null,null,"Google Play"],["Tensorflow",null,null,null,null,null,null,null,null,"TensorFlow"]]],["category","Choose a topic",[["AiAndMachineLearning",null,null,null,null,null,null,null,null,"AI and Machine Learning"],["Data",null,null,null,null,null,null,null,null,"Data"],["Enterprise",null,null,null,null,null,null,null,null,"Enterprise"],["Gaming",null,null,null,null,null,null,null,null,"Gaming"],["Mobile",null,null,null,null,null,null,null,null,"Mobile"],["Web",null,null,null,null,null,null,null,null,"Web"]]]]]],[1,1],null,1],[[["UA-24532603-1"],["UA-22084204-5"],null,null,["UA-24532603-5"],null,null,[["G-272J68FCRF"],null,null,[["G-272J68FCRF",2]]],[["UA-24532603-1",2]],null,[["UA-24532603-5",2]],null,1],[[13,10],[3,2],[12,9],[16,13],[11,8],[14,11],[4,3],[15,12],[6,5],[5,4],[1,1]],[[2,2],[1,1]]],null,4,null,null,null,null,null,null,null,null,null,null,null,null,null,"developers.devsite.google"],null,"pk_live_5170syrHvgGVmSx9sBrnWtA5luvk9BwnVcvIi7HizpwauFG96WedXsuXh790rtij9AmGllqPtMLfhe2RSwD6Pn38V00uBCydV4m"]') </script> <devsite-a11y-announce></devsite-a11y-announce> </body> </html>

Pages: 1 2 3 4 5 6 7 8 9 10