Question

Je veux montrer ce emplacement à l'intérieur de la carte sans utiliser le schéma d'URL de Google Maps. J'ai utilisé GMSPanoramaView pour afficher la vue sur la rue en utilisant la latitude/longitude donnée. (53.426398,-2.242795) mais à l'intérieur de la zone du bâtiment qui ne s'affiche pas, cette zone s'affiche dans le navigateur ou dans le schéma d'URL.

j'ai utilisé démo github code pour afficher la vue sur la rue, mais je souhaite afficher exactement au-dessus de l'emplacement dans l'application.

Je ne souhaite pas utiliser l'application WebView, Safari ou Google Map.

Était-ce utile?

La solution

Je pense que vous êtes manquant

[panoramaView_ moveToPanoramaID:@"i3XJvXkmgNMAAAQW-ezYnQ"];

Autres conseils

C'est possible!Extraire le panoid depuis message de l'utilisateur2744623:

Voici un lien alternatif (utilisé Embedder pour Google Business View) https://maps.google.com/maps?layer=c&panoid=shcQTg4Y9qh9T0p5aspVvA&ie=UTF8&source=embed&output=svembed&cbp=13%2C213%2C%2C0%2C0

Et puis utilisez-le comme PanoramaID dans le SDK iOS :

GMSPanoramaView *view_ = [GMSPanoramaView panoramaWithFrame:CGRectZero
                          nearCoordinate:CLLocationCoordinate2DMake(53.426398, -2.242795)];
[view_ moveToPanoramaID:@"shcQTg4Y9qh9T0p5aspVvA"];

Vous pouvez alors définir GMSPanoramaCamera:cameraWithHeading:pitch:zoom: selon l'angle que vous préférez :

[GMSPanoramaCamera cameraWithHeading:200.0f pitch:-10.0f zoom:1];

Voici la documentation officielle sur GMSPanoramaView:moveToPanoramaID::

Demande un panorama avec panoramaID.Une fois terminé avec succès panoramaView:didMoveToPanorama: sera envoyé à GMSPanoramaViewDelegate.Sur erreur panoramaView:error:onMoveToPanoramaID: sera envoyé.Appels répétés à moveToPanoramaID: entraîner l'annulation des transitions précédentes en attente (incomplètes) -- seule la plus récente d'entre elles moveNearCoordinate: et moveToPanoramaId: procédera et générera des événements.Seulement panoramaIDLes fichiers obtenus à partir du SDK Google Maps pour iOS sont pris en charge.

Je pense que vous pouvez ignorer la dernière phrase, hein.

Voici une implémentation complète, adaptée du projet de démonstration SDK :

@interface PanoramaViewController () <GMSPanoramaViewDelegate>
@end

@implementation PanoramaViewController {
    GMSPanoramaView *view_;
    BOOL configured_;
}

- (void)viewDidLoad {
    [super viewDidLoad];

    view_ = [GMSPanoramaView panoramaWithFrame:CGRectZero
                                nearCoordinate:CLLocationCoordinate2DMake(53.426398, -2.242795)];
    view_.backgroundColor = [UIColor grayColor];
    view_.delegate = self;
    self.view = view_;

    [view_ moveToPanoramaID:@"shcQTg4Y9qh9T0p5aspVvA"];
}

#pragma mark - GMSPanoramaDelegate

- (void)panoramaView:(GMSPanoramaView *)view
   didMoveToPanorama:(GMSPanorama *)panorama {
    if (!configured_) {
        view_.camera = [GMSPanoramaCamera cameraWithHeading:200.0f pitch:-10.0f zoom:1];

        configured_ = YES;
    }
}

// Use to fine-tune initial heading and pitch
- (void)panoramaView:(GMSPanoramaView *)panoramaView
       didMoveCamera:(GMSPanoramaCamera *)camera {
    NSLog(@"Camera: (%f,%f,%f)", camera.orientation.heading, camera.orientation.pitch, camera.zoom);
}

// Helpful in finding other panorama IDs or debugging:
- (void)panoramaView:(GMSPanoramaView *)view
willMoveToPanoramaID:(NSString *)panoramaID {
    NSLog(@"willMoveToPanoramaID: %@", panoramaID);
}

- (void)panoramaView:(GMSPanoramaView *)view
               error:(NSError *)error
  onMoveToPanoramaID:(NSString *)panoramaID {
    NSLog(@"error: %@ onMoveToPanoramaID: %@", error, panoramaID);
}

@end

Vous avez deux options.Téléchargez la PANO ou utilisez l'une des nombreuses manières agréées de Google pour obtenir la vue.

Voici un lien alternatif (excédant d'utilisation de Google Business View) https:// cartes.google.com / Cartes? Couche= C & AMP; Panoid= shcqtg4y9qh9t0p5aspvva & IE= UTF8 & Source= Intégration et sortie= SVEMBED & CBP= 13% 2C213% 2C% 2C0% 2C0

Prenez la pano à l'aide de Pano Fetch

Utilisez l'API - Le code ci-dessous est partiellement pseudo, vous aurez besoin d'une petite quantité de connaissances JavaScript.

var your_pano = new google.maps.LatLng(53.426398,-2.242795);
  var panoramaOptions2 = {
    position: your_pano,
        addressControlOptions: {
      position: google.maps.ControlPosition.TOP_CENTER
    },
    zoomControl: false,
    linksControl: true,
    panControl: false,
    fov: 110,
    pov: {
      heading: 100,
      pitch: -20
    },
    zoom: 0
  };
  var your_pano = new google.maps.StreetViewPanorama(
      document.getElementById('your_pano'),
      panoramaOptions2);
  your_pano.setVisible(true);

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top