Com o Street View do Google Maps, você pode explorar lugares no mundo todo usando imagens de rua em 360 graus. Você pode explorar 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 graus 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/
. Saiba mais sobre o Street View e veja as áreas compatíveis em um mapa interativo em Sobre o Street View.
O SDK do Maps para iOS oferece um serviço do Street View para coletar e manipular as imagens usadas no recurso.
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 em conformidade com a projeção equirretangular (Plate Carrée), que contém 360 graus de visualização horizontal (uma volta completa) e 180 graus de visualização vertical (de cima para baixo). O panorama de 360 graus resultante define uma projeção em uma esfera com a imagem encapsulada na superfície bidimensional da esfera.
Os panoramas do Street View são visíveis com o objeto GMSPanoramaView
. Esse objeto fornece um visualizador que renderiza o panorama como uma esfera, com uma câmera no centro. Você pode controlar programaticamente a orientação da
câmera, bem como várias propriedades que personalizam o visualizador.
Como acessar dados do Street View
Os panoramas do Street View são identificados por um destes fragmentos de metadados:
panoramaID
- O ID exclusivo de um panorama do Street View. Esta
panoramaID
pode mudar ao longo do tempo e não é adequada como uma referência de longo prazo ou codificada. OpanoramaID
é usado para fornecer acesso programático a diferentes imagens do Street View. coordinate
- O local exato da imagem, expresso como
CLLocationCoordinate2D
. Use umcoordinate
para armazenar dados persistentes de um local no panorama ou para converter ações do usuário no mapa em uma imagem do Street View.
Tanto o panoramaID
quanto o coordinate
são armazenados como propriedades do
objeto GMSPanorama
. É possível solicitar um GMSPanorama
do
GMSPanoramaService
usando coordinate
ou panoramaID
. O
objeto resultante vai incluir ambos os metadados e 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
moveNearCoordinate
solicita um panorama perto da coordenada.O método
moveNearCoordinate:radius
é semelhante, mas permite especificar um raio de pesquisa em metros ao redor da coordenada.O método
moveNearCoordinate:source
permite especificar uma origem. Uma origem é útil quando você quer restringir o Street View para procurar apenas panoramas externos. Por padrão, os panoramas dos locais ficam dentro ou fora. Observe que pode não haver panoramas externos para o local especificado.O método
moveNearCoordinate:radius:source
permite especificar um raio e uma origem.
Como visualizar imagens do Street View
Como adicionar um visualizador do Street View
As etapas básicas para adicionar um visualizador são:
- (Uma vez) Siga as etapas em Primeiros passos para instalar o SDK, consiga uma chave e adicione os frameworks necessários.
- Crie ou atualize um
ViewController
. Se o panorama for exibido quando esse controlador de visualização se tornar visível, crie-o dentro do métodoloadView
. - Crie e instancie uma classe
GMSPanoramaView
usando o métodoGMSPanoramaView
initWithFrame:
. Se ela for usada como a única visualização do controlador, oCGRectZero
poderá ser usado como o frame do mapa. O mapa será redimensionado automaticamente. - Defina o objeto
GMSPanoramaView
como a visualização do controlador de visualizações. 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
Como personalizar o visualizador
Personalize o visualizador restringindo os gestos disponíveis. Por padrão, as panorâmica, o zoom e as viagens para panoramas adjacentes estão ativados.
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
- Se o usuário vai poder reorientar a câmera tocando ou
arrastando. Defina como
NO
para desativar as mudanças de orientação da câmera. zoomGestures
- Se o usuário pode fazer gesto de pinça para aplicar zoom. Defina como
NO
para desativar o zoom. navigationGestures
- Se o usuário pode alterar qual panorama fica visível. Os usuários
podem usar um único toque nos links de navegação ou tocar duas vezes na visualização para mudar
os panoramas. Defina como
NO
para desativar as mudanças de navegação.
Você pode 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 Google Street View podem ser visualizadas no aplicativo Google Maps para iOS. Você pode iniciar o aplicativo do Google Maps para iOS no modo de vista da rua com o esquema de URL comgooglemaps
, definindo o parâmetro mapmode
como streetview
. Veja 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 para uma imagem, mas não define a orientação da câmera para essa imagem.
Para essa finalidade, o objeto GMSOrientation
define duas propriedades:
heading
define o ângulo de rotação em graus ao redor do centro da câmera em relação ao norte verdadeiro. Os rumos são medidos no sentido horário: o norte verdadeiro é 0, o leste é 90, o sul é 180 e o oeste é 270.pitch
(0
padrão) define a variação "para cima" ou "para baixo" do ângulo em relação à inclinação inicial padrão da câmera. Frequentemente, mas nem sempre, a inclinação é plana e horizontal. Por exemplo, uma imagem capturada em uma colina provavelmente vai mostrar um argumento de venda padrão 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 apontando para baixo (para -90 graus retos e ortogonal à inclinação padrão).
Amplie
O Street View permite níveis diferentes de detalhes de imagem por meio do zoom. É possível definir o nível de zoom de forma programática, ou os usuários podem alterar o nível no visualizador, fazendo gesto de pinça para aplicar zoom.
Como mover a câmera
Depois de criar a GMSPanoramaView
com uma câmera padrão ou
configurada, você pode mudá-la de várias maneiras. Quando você muda a
câmera, você 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.
É possível modificar o objeto GMSPanoramaCamera
e defini-lo na propriedade camera
do GMSPanoramaView
. Isso encaixa a câmera no 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];
Você pode animar uma transição chamando o
método animateToCamera:animationDuration:
de GMSPanoramaView
.
Além disso, é possível controlar a câmera usando Core Animation. Esse recurso é disponibilizado
pelo CALayer
personalizado em GMSPanoramaView
,
GMSPanoramaLayer
.
Marcadores no Street View
O objeto GMSPanoramaView
pode exibir 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;
O tamanho dos marcadores será dimensionado como uma função da distância entre a posição do marcador e o local de GMSCameraView
. Se a distância ficar muito grande, o marcador ficará muito pequeno para ser exibido e ficará oculto.
Defina a propriedade panoramaView
como nil
para removê-la de GMSPanoramaView
.
Swift
marker.panoramaView = nil
Objective-C
marker.panoramaView = nil;
Eventos
Você pode detectar eventos que ocorrem no panorama do Street View, como quando um usuário toca nele. Para detectar eventos, implemente o protocolo GMSPanoramaViewDelegate
. Consulte o guia geral de eventos e a lista de métodos em GMSPanoramaViewDelegate
.