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.