360-Grad-Panorama-Straßenansicht in iOS von Google Map SDK
-
21-12-2019 - |
Frage
Ich will zeigen Das Standort innerhalb der Karte ohne Verwendung des Google Maps-URL-Schemas. Ich habe GMSPanoramaView verwendet, um die Straßenansicht unter Verwendung der angegebenen Breiten- und Längengrade anzuzeigen (53.426398,-2.242795) aber der Bereich innerhalb des Gebäudes wird nicht angezeigt, dieser Bereich wird im Browser oder im URL-Schema angezeigt.
ich benutzte Github-Demo Code, um die Straßenansicht anzuzeigen, aber ich möchte genau den oben genannten Standort in der App anzeigen.
Ich möchte keine Webview-, Safari- oder Google Map-App verwenden.
Lösung
Ich denke, du fehlt
generasacodicetagpre.Andere Tipps
Es ist möglich!Extrahieren Sie die panoid
aus Beitrag von user2744623:
Hier ist ein alternativer Link (verwendet Embedder für Google Business View) https://maps.google.com/maps?layer=c&panoid=shcQTg4Y9qh9T0p5aspVvA&ie=UTF8&source=embed&output=svembed&cbp=13%2C213%2C%2C0%2C0
Und dann verwenden Sie es als PanoramaID
im iOS SDK:
GMSPanoramaView *view_ = [GMSPanoramaView panoramaWithFrame:CGRectZero
nearCoordinate:CLLocationCoordinate2DMake(53.426398, -2.242795)];
[view_ moveToPanoramaID:@"shcQTg4Y9qh9T0p5aspVvA"];
Anschließend können Sie einstellen GMSPanoramaCamera:cameraWithHeading:pitch:zoom:
in den von Ihnen bevorzugten Winkel:
[GMSPanoramaCamera cameraWithHeading:200.0f pitch:-10.0f zoom:1];
Hier ist die offizielle Dokumentation An GMSPanoramaView:moveToPanoramaID:
:
Fordert ein Panorama mit an
panoramaID
.Nach erfolgreichem AbschlusspanoramaView:didMoveToPanorama:
wird an gesendetGMSPanoramaViewDelegate
.Auf FehlerpanoramaView:error:onMoveToPanoramaID:
wird gesendet werden.Wiederholte Anrufe beimoveToPanoramaID:
Dies führt dazu, dass die vorherigen ausstehenden (unvollständigen) Übergänge abgebrochen werden – nur der jüngste davonmoveNearCoordinate:
UndmoveToPanoramaId:
wird fortfahren und Ereignisse generieren.NurpanoramaID
Vom Google Maps SDK für iOS erhaltene Dateien werden unterstützt.
Ich denke, den letzten Satz kannst du ignorieren, heh.
Hier ist eine vollständige Implementierung, adaptiert aus dem SDK-Demoprojekt:
@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
Sie haben zwei Optionen.Laden Sie das Pano herunter oder verwenden Sie eine der vielen Google-genehmigten Wege, um die Ansicht zu erhalten.
Hier ist ein alternativer Link (verwendeter Embedder für Google Business View) https:// Karten.google.com / maps
generasacodicetagpre.