Pergunta

eu quero mostrar esse localização dentro do mapa sem usar o esquema de URL do Google Maps. Usei GMSPanoramaView para mostrar a vista da rua usando determinada lat/long (53.426398,-2.242795) mas dentro da área de construção não aparece, essa área está aparecendo no navegador ou no esquema de URL.

eu usei demonstração do github código para mostrar o Street View, mas quero mostrar exatamente acima da localização dentro do aplicativo.

Não quero usar o aplicativo webview, safari ou google map.

Foi útil?

Solução

Eu acho que você está faltando

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

Outras dicas

É possível!Extraia o panoid de postagem do usuário2744623:

Aqui está um link alternativo (usado Embedder para Google Business View) https://maps.google.com/maps?layer=c&panoid=shcQTg4Y9qh9T0p5aspVvA&ie=UTF8&source=embed&output=svembed&cbp=13%2C213%2C%2C0%2C0

E então use-o como um PanoramaID no SDK do iOS:

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

Você pode então definir GMSPanoramaCamera:cameraWithHeading:pitch:zoom: para o ângulo que você preferir:

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

Aqui está a documentação oficial sobre GMSPanoramaView:moveToPanoramaID::

Solicita um panorama com panoramaID.Após a conclusão bem-sucedida panoramaView:didMoveToPanorama: será enviado para GMSPanoramaViewDelegate.Em caso de erro panoramaView:error:onMoveToPanoramaID: será enviado.Chamadas repetidas para moveToPanoramaID: resultará no cancelamento das transições pendentes (incompletas) anteriores - apenas as mais recentes moveNearCoordinate: e moveToPanoramaId: irá prosseguir e gerar eventos.Apenas panoramaIDs obtidos do SDK do Google Maps para iOS são suportados.

Acho que você pode ignorar a última frase, heh.

Aqui está uma implementação completa, adaptada do projeto de demonstração do 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

Você tem duas opções.Baixe o panorama ou use uma das muitas formas aprovadas pelo Google para obter a visualização.

Aqui está um link alternativo (usado Embedder para Google Business View)https://maps.google.com/maps?layer=c&panoid=shcQTg4Y9qh9T0p5aspVvA&ie=UTF8&source=embed&output=svembed&cbp=13%2C213%2C%2C0%2C0

Pegue o panorama usando Pano Fetch

Use a API - O código abaixo é parcialmente psudo. Você precisará de um pouco de conhecimento de 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);
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top