09 Out, 2013 14:43

Utilizando o Google Maps no seu Aplicativo iOS - Parte 4

O SDK representa o Street View através da classe GMSPanoramaView que é uma subclasse de UIView e portanto deve ser adicionada como subview ou definida como a view de algum controller. No meu exemplo, seguirei a primeira opção.

Para simplificar, assumirei que você possui uma localização inicial, de onde será exibida a vista da rua.

Seja o nosso controller StreetViewController, temos o método abaixo.

- (id)initWithCoordinate:(CLLocationCoordinate2D)coordinate  {
    self = [super init];
    if (self) {
        initialCoordinate = coordinate;
    }
    return self;
}

Agora que temos a coordenada inicial, podemos inicial nossa GMSPanoramaView.

- (void)viewDidLoad {
    [super viewDidLoad];

    // 1
    self.panoramaView = [[GMSPanoramaView alloc] initWithFrame:self.view.bounds];
    self.panoramaView.delegate = self;
    self.panoramaView.autoresizingMask = UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleWidth;
    [self.view insertSubview:self.panoramaView atIndex:0];

    // 2
    [[[GMSPanoramaService alloc] init] requestPanoramaNearCoordinate:initialCoordinate callback:^(GMSPanorama *panorama, NSError *error) {
        if (panorama) {
            // 3
            [self.panoramaView moveToPanoramaID:panorama.panoramaID];
        }
        else {
            // 4 - Alertar o usuário que a vista da rua não está disponível / tratar error
            ...
        }
    }];
}

Depois de criar e posicionar a GMSPanoramaView (1), utilizamos o serviço GMSPanoramaService para solicitar a vista da rua (GMSPanorama) para a coordenada inicial (2) e exibimos na tela (3). Caso o serviço não consiga recuperar o panorama, você pode fazer o tratamento adequado e notificar o usuário do erro (4).

Outros recursos

Apenas com os códigos anteriores, já é possível exibir o Street View normalmente no seu aplicativo, mas existem outros recursos que você pode querer utilizar.

Algumas propriedades podem ser interessantes de manipular:

  • panorama: permite alterar a vista atual da rua;
  • delegate: define o delegate que vai receber diversos eventos que o usuário realizar;
  • orientationGestures, zoomGestures, navigationGestures: booleanos para ligar/desligar os gestos de orientação, zoom e navegação do usuário;
  • navigationLinksHidden, streetNamesHidden: você pode esconder/exibir os links de navegação e os nomes das ruas;
  • camera: você pode modificar a direção para onde a vista está apontando.

Também é possível adicionar marcadores assim como fazemos no mapa.

for (GMSMarker *marker in self.markers) {
    marker.panoramaView = self.panoramaView;
}

Por enquanto, encerro minha série de posts sobre o SDK do Google Maps. Conforme o Google for liberando mais funcionalidades interessantes, eu volto aqui para apresentar a vocês. Até a próxima.

Ao navegar neste site, você consente o uso de cookies nossos e de terceiros, que coletam informações anônimas e são essenciais para melhorar sua experiência em nosso site.