
O Street View do Google Maps permite explorar lugares do mundo todo com imagens de 360 graus no nível da rua. É possível conhecer pontos turísticos, ver maravilhas naturais, navegar em uma viagem ou mostrar a parte externa da sua empresa.
Visão geral
O Google Street View oferece vistas panorâmicas de 360° de vias designadas em toda a área de cobertura. A cobertura disponível
pelo SDK é a mesma do app Google Maps para iOS ou
https://maps.google.com/. Leia mais sobre o Street View e veja as áreas compatíveis em um mapa interativo. Acesse Sobre o Street View.
O SDK do Maps para iOS oferece um serviço do Street View para recuperar e manipular imagens usadas no Street View do Google Maps. As imagens do Street View
são retornadas como panoramas e visualizadas no
visualizador do Street View, um objeto do tipo
GMSPanoramaView.
Panoramas do Street View
Cada panorama do Street View é uma imagem ou um conjunto de imagens que oferece uma visualização completa em 360 graus de um único local. As imagens estão de acordo com a projeção equidistante (Plate Carrée), que contém 360 graus de visualização horizontal (uma volta completa ao redor de um ponto) e 180 graus de visualização vertical (do ponto mais alto ao mais baixo). O panorama de 360 graus resultante define uma projeção em uma esfera com a imagem ajustada à superfície bidimensional dessa esfera.
Os panoramas do Street View podem ser visualizados com o objeto GMSPanoramaView. Esse objeto fornece um visualizador que renderiza o panorama como uma esfera, com uma câmera no centro. É possível controlar programaticamente a orientação da câmera, bem como várias propriedades que personalizam o visualizador.
Acessar dados do Street View
Os panoramas do Street View são identificados por um destes dois metadados:
panoramaID- O ID exclusivo de um panorama do Street View. Este
panoramaIDpode mudar com o tempo e não é adequado como uma referência de longo prazo ou codificada, OpanoramaIDé mais adequado para fornecer acesso programático a diferentes imagens do Street View. coordinate- O local exato dessa imagem, expresso como um
CLLocationCoordinate2D. Use acoordinatepara armazenamento persistente de um local de panorama ou para traduzir ações do usuário no mapa em uma imagem do Street View.
O panoramaID e a coordinate são armazenados como propriedades do objeto GMSPanorama. É possível solicitar um GMSPanorama do
GMSPanoramaService usando a coordinate ou panoramaID. O objeto resultante vai incluir os dois metadados, bem como uma matriz de links para panoramas próximos.
Definir o local do panorama
O local do panorama do Street View pode ser definido com base na coordenada.
O método
moveNearCoordinatesolicita um panorama próximo à coordenada.O método
moveNearCoordinate:radiusé semelhante, mas permite especificar um raio de pesquisa, em metros, ao redor da coordenada.O método
moveNearCoordinate:sourcepermite especificar uma origem. Use uma origem para restringir o Street View de forma a procurar apenas panoramas ao ar livre. Por padrão, os panoramas de locais são internos ou externos. e pode ser que não existam panoramas externos para o local especificado.O método
moveNearCoordinate:radius:sourcepermite especificar um raio e uma origem.
Como visualizar imagens do Street View
Adicionar um visualizador do Street View
As etapas básicas para adicionar um visualizador são:
- (Uma vez) Siga as etapas em Introdução para baixar o SDK, conseguir uma chave e adicionar os frameworks necessários.
- Crie ou atualize um
ViewController. Se o panorama for exibido quando esse controlador de visualização ficar visível, crie-o no métodoloadView. - Crie e instancie uma classe
GMSPanoramaViewusando o métodoGMSPanoramaViewinitWithFrame:. Se ela for usada como a única visualização do controlador de visualização,CGRectZeropoderá ser usado como o frame do mapa. O mapa será redimensionado automaticamente. - Defina o objeto
GMSPanoramaViewcomo a visualização do controlador de visualização. Por exemplo,self.view = panoView;. - Defina o local da imagem do Street View usando um método como
moveNearCoordinate:.
O método a seguir adiciona um visualizador do Street View a um aplicativo.
Swift
import GoogleMaps class StreetView: UIViewController { override func loadView() { let panoView = GMSPanoramaView(frame: .zero) self.view = panoView panoView.moveNearCoordinate(CLLocationCoordinate2D(latitude: -33.732, longitude: 150.312)) } }
Objective-C
#import "StreetView.h" @import GoogleMaps; @interface StreetView () @end @implementation StreetView - (void)loadView { GMSPanoramaView *panoView = [[GMSPanoramaView alloc] initWithFrame:CGRectZero]; self.view = panoView; [panoView moveNearCoordinate:CLLocationCoordinate2DMake(-33.732, 150.312)]; } @end
Personalizar o visualizador
Personalize o visualizador restringindo os gestos disponíveis. Por padrão, o deslocamento, o zoom e o acesso a panoramas adjacentes estão ativados.
Os gestos individuais são controlados pelas propriedades de GMSPanoramaView.
Essas propriedades ativam ou desativam os gestos controlados pelo usuário. Mudanças programáticas ainda são possíveis quando o gesto está desativado.
orientationGestures- Indica se o usuário pode reorientar a câmera tocando ou
arrastando. Defina como
NOpara desativar as mudanças de orientação da câmera. zoomGestures- Define se o usuário pode fazer gesto de pinça para aplicar zoom. Defina como
NOpara desativar o zoom. navigationGestures- Indica se o usuário pode mudar o panorama visível. Os usuários
podem usar um único toque nos links de navegação ou dois toques na visualização para mudar os
panoramas. Defina como
NOpara desativar as mudanças de navegação.
É possível ativar ou desativar todos os gestos de uma só vez com o método setAllGesturesEnabled:.
Swift
panoView.setAllGesturesEnabled(false)
Objective-C
[panoView setAllGesturesEnabled:NO];
Como iniciar o Street View com o esquema de URL
As imagens do Street View podem ser visualizadas no aplicativo Google Maps para iOS. É possível iniciar o aplicativo Google Maps para iOS no modo Street View com o esquema de URL comgooglemaps definindo o parâmetro mapmode como streetview. Confira abaixo um exemplo de URL que inicia o Street View. Para mais informações, consulte a documentação do esquema de URL.
comgooglemaps://?center=46.414382,10.013988&mapmode=streetview
Locais e ponto de vista (POV) do Street View
O GMSPanoramaCamera permite definir o ponto de vista da câmera do Street View como uma combinação de direção, inclinação e zoom.
O fragmento a seguir orienta a câmera para o sul e ligeiramente para baixo.
Swift
panoView.camera = GMSPanoramaCamera(heading: 180, pitch: -10, zoom: 1)
Objective-C
panoView.camera = [GMSPanoramaCamera cameraWithHeading:180 pitch:-10 zoom:1];
Orientação
O local do Street View define o posicionamento do foco da câmera em uma imagem, mas não a orientação dela para essa imagem.
Para isso, o objeto GMSOrientation define duas propriedades:
heading: define o ângulo de rotação (em graus) em torno do local da câmera em relação ao norte absoluto. As direções são medidas no sentido horário: o norte verdadeiro é 0, o leste é 90, o sul é 180 e o oeste é 270.pitch(padrão0): especifica a variação angular para cima ou para baixo em relação à inclinação inicial padrão da câmera, que costuma ser plana e horizontal. Por exemplo, uma imagem capturada em uma colina provavelmente tem um valor padrão de inclinação que não é horizontal. Os ângulos de inclinação são medidos com valores positivos olhando para cima (até +90 graus diretamente para cima e ortogonal à inclinação padrão) e valores negativos olhando para baixo (até -90 graus diretamente para baixo e ortogonal à inclinação padrão).
Zoom
O Street View permite níveis diferentes de detalhes de imagem por meio do zoom. É possível definir o nível de zoom de maneira programática ou os usuários podem mudar o nível no visualizador fazendo o gesto de pinça para aplicar zoom.
Como mover a câmera
Depois de criar o GMSPanoramaView e ele ter uma câmera configurada ou padrão, é possível mudar de várias maneiras. Quando você movimenta a câmera, tem a opção de animar o movimento resultante dela. A animação interpola entre os atributos atuais da câmera e os novos atributos da câmera.
É possível modificar o objeto GMSPanoramaCamera e defini-lo na propriedade camera do GMSPanoramaView. Isso vai ajustar a câmera ao novo ponto de vista sem animação. Um GMSCameraPosition pode ser criado para configurar qualquer combinação de orientação e zoom.
Swift
panoView.camera = GMSPanoramaCamera(heading: 180, pitch: -10, zoom: 1)
Objective-C
panoView.camera = [GMSPanoramaCamera cameraWithHeading:180 pitch:-10 zoom:1];
É possível animar uma transição chamando o método animateToCamera:animationDuration: de GMSPanoramaView.
Além disso, é possível controlar a câmera usando Core Animation. Isso é disponibilizado pela CALayer personalizada em GMSPanoramaView, GMSPanoramaLayer.
Marcadores no Street View
O objeto GMSPanoramaView pode mostrar marcadores de mapa. É possível usar o mesmo objeto GMSMarker em um objeto GMSMapView ou GMSPanoramaView definindo as propriedades correspondentes:
Swift
// Create a marker at the Eiffel Tower let position = CLLocationCoordinate2D(latitude: 48.858, longitude: 2.294) let marker = GMSMarker(position: position) // Add the marker to a GMSPanoramaView object named panoView marker.panoramaView = panoView // Add the marker to a GMSMapView object named mapView marker.map = mapView
Objective-C
// Create a marker at the Eiffel Tower CLLocationCoordinate2D position = CLLocationCoordinate2DMake(48.858,2.294); GMSMarker *marker = [GMSMarker markerWithPosition:position]; // Add the marker to a GMSPanoramaView object named panoView marker.panoramaView = panoView; // Add the marker to a GMSMapView object named mapView marker.map = mapView;
Os marcadores serão dimensionados em tamanho como uma função da distância entre a posição do marcador e o local do GMSCameraView. Se essa distância ficar muito grande, o marcador ficará muito pequeno para ser exibido e será ocultado da visualização.
Defina a propriedade panoramaView como nil para remover do GMSPanoramaView.
Swift
marker.panoramaView = nil
Objective-C
marker.panoramaView = nil;
Eventos
É possível detectar eventos que ocorrem no panorama do Street View, como quando um usuário toca no panorama. Para detectar os eventos, é necessário implementar o
GMSPanoramaViewDelegate protocolo. Consulte o guia geral de eventos e a lista de métodos no
GMSPanoramaViewDelegate.