Google Maps Street View vous permet d'explorer les sites du monde entier en profitant d'images à 360 degrés des rues. Vous pouvez explorer des sites célèbres, découvrir des merveilles naturelles, suivre un voyage ou montrer l'extérieur.
Présentation
Google Street View offre des vues panoramiques à 360 degrés à partir des routes sélectionnées dans sa zone de couverture. La couverture disponible via le SDK est la même que pour l'application Google Maps pour iOS ou https://maps.google.com/
. Pour en savoir plus sur Street View et voir les zones compatibles sur une carte interactive, consultez À propos de Street View.
Le SDK Maps pour iOS fournit un service Street View permettant d'obtenir et de manipuler les images utilisées dans Google Maps Street View.
Les images Street View sont renvoyées sous forme de panoramas et vues depuis la visionneuse Street View, qui est un objet de type GMSPanoramaView
.
Panoramas Street View
Chaque panorama Street View est une image, ou une série d'images, représentant une vue complète à 360 degrés d'un même lieu. Les images sont conformes à la projection équirectangulaire (Plate Carrée), qui comprend une vue horizontale à 360 degrés (tour d'horizon complet) et une vue verticale à 180 degrés (de droite à droite). Le panorama à 360 degrés ainsi obtenu définit une projection sur une sphère, l'image recouvrant la surface à deux dimensions de cette sphère.
Les panoramas Street View sont visibles avec l'objet GMSPanoramaView
. Cet objet fournit une visionneuse qui affiche le panorama sous la forme d'une sphère, avec un appareil photo en son centre. Vous pouvez contrôler par programmation l'orientation de la caméra, ainsi que plusieurs propriétés pour personnaliser la visionneuse.
Accéder aux données Street View
Les panoramas Street View sont identifiés par l'un des deux éléments de métadonnées suivants :
panoramaID
- Identifiant unique d'un panorama Street View. Ce
panoramaID
est susceptible de changer avec le temps et n'est pas adapté à long terme ni de code codé en dur. LepanoramaID
est mieux adapté pour fournir un accès programmatique à différentes images Street View. coordinate
- Position exacte de l'image, exprimée par
CLLocationCoordinate2D
. Utilisez uncoordinate
pour stocker de manière persistante un emplacement de panorama ou pour traduire les actions de l'utilisateur sur la carte en image Street View.
panoramaID
et coordinate
sont stockés en tant que propriétés de l'objet GMSPanorama
. Vous pouvez demander un GMSPanorama
à partir de GMSPanoramaService
en utilisant coordinate
ou panoramaID
. L'objet résultant inclura les deux éléments de métadonnées, ainsi qu'un tableau de liens vers des panoramas à proximité.
Définition de la position du panorama
La position du panorama Street View peut être définie en fonction des coordonnées.
La méthode
moveNearCoordinate
demande un panorama près de la coordonnée.La méthode
moveNearCoordinate:radius
est semblable, mais elle vous permet de spécifier un rayon de recherche, en mètres, autour de la coordonnée.La méthode
moveNearCoordinate:source
vous permet de spécifier une source. Une source est utile si vous souhaitez limiter Street View afin qu'il ne recherche que des panoramas extérieurs. Par défaut, les panoramas des lieux sont à l'intérieur ou à l'extérieur. Notez que les panoramas en plein air peuvent ne pas exister pour le lieu spécifié.La méthode
moveNearCoordinate:radius:source
vous permet de spécifier un rayon et une source.
Afficher des images Street View
Ajouter une visionneuse Street View
Les principales étapes pour ajouter une visionneuse sont les suivantes :
- (Une fois) Suivez la procédure de la section Premiers pas pour obtenir le SDK, obtenir une clé et ajouter les frameworks requis.
- Créez ou mettez à jour un
ViewController
. Si le panorama est affiché lorsque ce contrôleur de vue devient visible, veillez à le créer dans la méthodeloadView
. - Créez et instanciez une classe
GMSPanoramaView
à l'aide de la méthodeinitWithFrame:
GMSPanoramaView
. Si elle doit être utilisée comme vue unique du contrôleur de vue,CGRectZero
peut être utilisé comme cadre de la carte. La carte est alors automatiquement redimensionnée. - Définissez l'objet
GMSPanoramaView
comme vue du contrôleur de vue, par exempleself.view = panoView;
. - Définissez l'emplacement de l'image Street View à l'aide d'une méthode telle que
moveNearCoordinate:
.
Dans l'exemple ci-dessous, une visionneuse Street View est ajoutée à une application.
Swift
import GoogleMaps class StreetView: UIViewController { override func loadView() { let panoView = GMSPanoramaView(frame: .zero) self.view = panoView panoView.moveNearCoordinate(CLLocationCoordinate2D(latitude: -33.732, longitude: 150.312)) } }
Objective-C
#import "StreetView.h" @import GoogleMaps; @interface StreetView () @end @implementation StreetView - (void)loadView { GMSPanoramaView *panoView = [[GMSPanoramaView alloc] initWithFrame:CGRectZero]; self.view = panoView; [panoView moveNearCoordinate:CLLocationCoordinate2DMake(-33.732, 150.312)]; } @end
Personnaliser le lecteur
Vous pouvez personnaliser la visionneuse en limitant les gestes disponibles. Par défaut, les fonctions de panoramique, de zoom et de déplacement vers les panoramas adjacents sont activées.
Les gestes individuels sont contrôlés via les propriétés de GMSPanoramaView
.
Ces propriétés permettent d'activer ou de désactiver les gestes contrôlés par l'utilisateur. Des modifications programmatiques sont toujours possibles lorsque le geste est désactivé.
orientationGestures
- Indique si l'utilisateur peut réorienter la caméra en appuyant dessus ou en la faisant glisser. Définissez la valeur sur
NO
pour désactiver les changements d'orientation de la caméra. zoomGestures
- Indique si l'utilisateur peut pincer pour zoomer. Définissez la valeur sur
NO
pour désactiver le zoom. navigationGestures
- Indique si l'utilisateur peut modifier le panorama visible. Les utilisateurs peuvent appuyer une fois sur des liens de navigation ou appuyer deux fois sur la vue pour modifier les panoramas. Définissez la valeur sur
NO
pour désactiver les modifications de la navigation.
Vous pouvez activer ou désactiver simultanément tous les gestes à l'aide de la méthode setAllGesturesEnabled:
.
Swift
panoView.setAllGesturesEnabled(false)
Objective-C
[panoView setAllGesturesEnabled:NO];
Lancer Street View avec le schéma d'URL
Les images Google Street View sont visibles dans l'application Google Maps pour iOS. Vous pouvez lancer l'application Google Maps pour iOS en mode Street View avec le schéma d'URL comgooglemaps
en définissant le paramètre mapmode
sur streetview
. Vous trouverez ci-dessous un exemple d'URL qui lancera Street View. Pour en savoir plus, consultez la documentation sur le schéma d'URL.
comgooglemaps://?center=46.414382,10.013988&mapmode=streetview
Lieux et point de vue Street View
GMSPanoramaCamera
vous permet de définir le point de vue de la caméra Street View en combinant le cap, la tonalité et le zoom.
Le fragment ci-dessous oriente l'appareil photo vers le sud et légèrement vers le bas.
Swift
panoView.camera = GMSPanoramaCamera(heading: 180, pitch: -10, zoom: 1)
Objective-C
panoView.camera = [GMSPanoramaCamera cameraWithHeading:180 pitch:-10 zoom:1];
Orientation
Le lieu Street View définit la position de l'appareil photo pour une image, mais pas son orientation pour cette image.
À cette fin, l'objet GMSOrientation
définit deux propriétés:
heading
définit l'angle de rotation en degrés autour de l'appareil photo par rapport au nord géographique. Les caps sont mesurés en sens horaire : le nord géographique est à 0, l'est à 90, le sud à 180, l'ouest à 270.pitch
(0
par défaut) définit la variance d'angle "vers le haut" ou "vers le bas" par rapport à l'inclinaison par défaut initiale de l'appareil photo, qui est souvent (mais pas toujours) plate horizontalement. Par exemple, une image prise sur une colline présentera probablement une inclinaison par défaut qui n'est pas horizontale. Les angles d'inclinaison sont mesurés en orientant les valeurs positives vers le haut (jusqu'à +90 degrés vers le haut et à angle droit par rapport à l'inclinaison par défaut) et les valeurs négatives vers le bas (jusqu'à -90 degrés vers le bas et vers l'inclinaison par rapport à l'inclinaison par défaut).
Allongez
Street View prend en charge différents niveaux de détails des images via l'utilisation du zoom. Vous pouvez régler le niveau de zoom par programmation, ou les utilisateurs peuvent modifier le niveau dans la visionneuse en pinçant pour zoomer.
Déplacer la caméra
Une fois que vous avez créé GMSPanoramaView
et qu'il est associé à une caméra configurée ou par défaut, vous pouvez le modifier de plusieurs manières. Lorsque vous changez de caméra, vous avez la possibilité d'animer le mouvement de caméra qui en résulte. L'animation effectue une interpolation entre les attributs de caméra actuels et les nouveaux.
Vous pouvez modifier l'objet GMSPanoramaCamera
et le définir sur la propriété camera
de GMSPanoramaView
. L'appareil photo est ainsi ancré sur le nouveau point de vue sans animation. Un GMSCameraPosition
peut être créé pour configurer n'importe quelle combinaison d'orientation et de zoom.
Swift
panoView.camera = GMSPanoramaCamera(heading: 180, pitch: -10, zoom: 1)
Objective-C
panoView.camera = [GMSPanoramaCamera cameraWithHeading:180 pitch:-10 zoom:1];
Vous pouvez animer une transition en appelant la méthode animateToCamera:animationDuration:
de GMSPanoramaView
.
Vous pouvez également contrôler l'appareil photo à l'aide de Core Animation. Ce paramètre est disponible via le CALayer
personnalisé le GMSPanoramaView
GMSPanoramaLayer
.
Repères dans Street View
L'objet GMSPanoramaView
peut afficher des repères sur la carte. Vous pouvez utiliser le même objet GMSMarker
sur un objet GMSMapView
ou GMSPanoramaView
en définissant ses propriétés correspondantes:
Swift
// Create a marker at the Eiffel Tower let position = CLLocationCoordinate2D(latitude: 48.858, longitude: 2.294) let marker = GMSMarker(position: position) // Add the marker to a GMSPanoramaView object named panoView marker.panoramaView = panoView // Add the marker to a GMSMapView object named mapView marker.map = mapView
Objective-C
// Create a marker at the Eiffel Tower CLLocationCoordinate2D position = CLLocationCoordinate2DMake(48.858,2.294); GMSMarker *marker = [GMSMarker markerWithPosition:position]; // Add the marker to a GMSPanoramaView object named panoView marker.panoramaView = panoView; // Add the marker to a GMSMapView object named mapView marker.map = mapView;
La taille des repères dépend de la distance entre leur position et l'emplacement de GMSCameraView
. Si cette distance devient trop élevée, le repère devient trop petit pour être affiché et est masqué.
Définissez la propriété panoramaView
sur nil
pour la supprimer de GMSPanoramaView
.
Swift
marker.panoramaView = nil
Objective-C
marker.panoramaView = nil;
Événements
Vous pouvez écouter les événements qui se produisent sur le panorama Street View, par exemple lorsqu'un utilisateur appuie sur le panorama. Pour écouter des événements, vous devez implémenter le protocole GMSPanoramaViewDelegate
. Consultez le guide général sur les événements et la liste des méthodes sur le GMSPanoramaViewDelegate
.