Pronto!

Para começar a desenvolver, acesse nossa documentação do desenvolvedor.

Ative a Google Maps Android API

Para começar, orientaremos você pelo Google Developers Console para realizar algumas atividades:

  1. Criar ou selecionar um projeto
  2. Ative a Google Maps Android API
  3. Criar chaves apropriadas
Continuar

Street View

O Google Street View fornece exibições panorâmicas de 360 graus para vias designadas em toda a área de cobertura.

Este vídeo mostra como usar o serviço Street View para oferecer aos usuários uma experiência do mundo real para um endereço no mapa, disponibilizando contexto significativo sobre o destino ou sobre qualquer outro lugar em que estejam interessados.

A cobertura disponibilizada pela Google Maps Android API v2 é a mesma do aplicativo Google Maps em um dispositivo Android. Saiba mais sobre o Street View e veja as áreas cobertas em um mapa interativo em Sobre o Street View.

A classe StreetViewPanorama modela o panorama do Street View no aplicativo. Na IU, um panorama é representado por um objeto StreetViewPanoramaFragment ou StreetViewPanoramaView.

Exemplos de código

O repositório ApiDemos no GitHub inclui exemplos que demonstram o uso de do Street View:

Visão geral do Street View na Google Maps Android API

A Google Maps Android API fornece um serviço do Street View para obter e manipular as imagens usadas no Google Street View. As imagens são retornadas como panoramas.

Cada panorama do Street View é uma imagem ou um conjunto de imagens que oferece uma visualização de 360 graus completa de uma única localização. As imagens estão em conformidade com a projeção equirretangular (Plate Carrée), que contém 360 graus de exibição horizontal (uma volta completa) e 180 graus de exibição vertical (de cima para baixo). O panorama de 360 graus resultante define a projeção em uma esfera com a imagem cobrindo a superfície bidimensional dessa esfera.

O StreetViewPanorama fornece um visualizador que renderiza o panorama como uma esfera com uma câmera no centro. É possível manipular a StreetViewPanoramaCamera para controlar o zoom e a orientação (inclinação e rumo) da câmera.

Primeiros passos

Siga o guia de primeiros passos para configurar um projeto da Google Maps Android API. Em seguida, adicione um panorama do Street View, como descrito a seguir.

A biblioteca cliente do SDK do Google Play Services inclui vários exemplos do Street View que podem ser importados para o projeto e usados como base para o desenvolvimento. Consulte a introdução para obter diretrizes sobre a importação dos exemplos.

Usar a API

Siga as instruções a seguir para adicionar um panorama do Street View a um fragmento do Android. É a maneira mais simples de adicionar o Street View ao aplicativo. Em seguida, leia mais sobre fragmentos, visualizações e personalização do panorama.

Adicionar um panorama do Street View

Resumindo:

  1. Adicione um objeto de fragmento à atividade que processará o panorama do Street View. A forma mais fácil de fazer isso é adicionar um elemento <fragment> ao arquivo de layout para a Activity.
  2. Implemente a interface OnStreetViewPanoramaReadyCallback e use o método de retorno de chamada onStreetViewPanoramaReady(StreetViewPanorama) para obter um manipulador para o objeto StreetViewPanorama.
  3. Chame getStreetViewPanoramaAsync() no fragmento para registrar o retorno de chamada.

Veja a seguir mais detalhes sobre cada etapa.

Adicionar um fragmento

Adicione um elemento <fragment> ao arquivo de layout da atividade para definir um objeto de fragmento. Nesse elemento, defina o atributo class como com.google.android.gms.maps.StreetViewPanoramaFragment (ou SupportStreetViewPanoramaFragment).

Este é um exemplo de um fragmento em um arquivo de layout:

<fragment
    android:name="com.google.android.gms.maps.StreetViewPanoramaFragment"
    android:id="@+id/streetviewpanorama"
    android:layout_width="match_parent"
    android:layout_height="match_parent"/>

Adicionar código do Street View

Para trabalhar com o panorama do Street View dentro do aplicativo, será necessário implementar a interface OnStreetViewPanoramaReadyCallback e definir uma instância do retorno de chamada em um objeto StreetViewPanoramaFragment ou StreetViewPanoramaView. Este tutorial usa um StreetViewPanoramaFragment, pois é a forma mais simples de adicionar o Street View a um aplicativo. A primeira etapa é implementar a interface de retorno de chamada:

public class MainActivity extends FragmentActivity
    implements OnStreetViewPanoramaReadyCallback {
...
}

No método onCreate() da Activity, defina o arquivo de layout como a visualização de conteúdo. Por exemplo, se o nome do arquivo de layout émain.xml, use este código:

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    ...
}

Obtenha um manipulador para o fragmento chamando FragmentManager.findFragmentById() e passando a ele o ID do recurso do elemento <fragment>. Observe que o ID de recurso R.id.streetviewpanorama é adicionado automaticamente ao projeto Android quando o arquivo de layout é criado.

Em seguida, use getStreetViewPanoramaAsync() para definir o retorno de chamada no fragmento.

StreetViewPanoramaFragment streetViewPanoramaFragment =
    (StreetViewPanoramaFragment) getFragmentManager()
        .findFragmentById(R.id.streetviewpanorama);
streetViewPanoramaFragment.getStreetViewPanoramaAsync(this);

Observação: é preciso chamar getStreetViewPanoramaAsync() no encadeamento principal e o retorno de chamada será executado no encadeamento principal. Se o Google Play Services não estiver instalado no dispositivo do usuário, o retorno de chamada não será acionado até que o usuário instale o Google Play Services.

Use o método de retorno de chamada onStreetViewPanoramaReady(StreetViewPanorama) para recuperar uma instância não nula de StreetViewPanorama, pronta para uso.

@Override
public void onStreetViewPanoramaReady(StreetViewPanorama panorama) {
    panorama.setPosition(new LatLng(-33.87365, 151.20689));
}

Mais sobre a configuração do estado inicial

Ao contrário de um mapa, não é possível configurar o estado inicial do panorama do Street View usando XML. No entanto, é possível configurar o panorama programaticamente passando um objeto StreetViewPanoramaOptions contendo as opções especificadas.

mSvpView = new StreetViewPanoramaView(this,
    new StreetViewPanoramaOptions().position(SAN_FRAN));

Mais sobre o StreetViewPanoramaFragment

StreetViewPanoramaFragment é uma subclasse da classe fragmento Android e permite colocar um panorama do Street View em um fragmento Android. Os objetos de StreetViewPanoramaFragment atuam como contêineres para o panorama e oferecem acesso ao objeto StreetViewPanorama.

Observação: o Google Maps Android API exige o nível da API 12 ou mais recente para oferecer suporte a objetos StreetViewPanoramaFragment. Se você pretende oferecer suporte a aplicativos anteriores ao nível da API 12, pode acessar a mesma funcionalidade usando a classe SupportStreetViewPanoramaFragment. Também é necessário incluir a Android Support Library.

Observação: a Google Maps Android API não permite vários objetos StreetViewPanoramaFragment em uma única atividade.

StreetViewPanoramaView

StreetViewPanoramaView, uma subclasse da classe View do Android, permite colocar um panorama do Street View em uma View do Android. Uma View representa uma região retangular da tela e é um elemento básico fundamental para aplicativos e widgets Android. De forma semelhante ao StreetViewPanoramaFragment, a StreetViewPanoramaView atua como um contêiner do panorama, expondo funcionalidades essenciais por meio do objeto StreetViewPanorama. Os usuários dessa classe precisam encaminhar todos os métodos de ciclo de vida da atividade (como onCreate(), onDestroy(), onResume() e onPause()) aos métodos correspondentes na classe StreetViewPanoramaView.

Observação: a Google Maps Android API não permite vários objetos StreetViewPanoramaView em uma única atividade.

Personalizar a funcionalidade controlada pelo usuário

Por padrão, as funcionalidades a seguir estão disponíveis para o usuário durante a visualização do panorama do Street View: deslocamento, alteração de zoom e acesso a panoramas adjacentes. Você pode ativar e desativar os gestos controlados pelo usuário usando métodos no StreetViewPanorama. As alterações programáticas continuam possíveis após a desativação dos gestos.

setPanningGesturesEnabled()
Determina se o usuário pode reorientar a câmera arrastando-a.
      mSvp.setPanningGesturesEnabled(false);
setUserNavigationEnabled()
Determina se o usuário pode acessar um panorama diferente. Os usuários podem usar um único toque nos links de navegação ou dois toques na visualização para acessar um novo panorama.
      mSvp.setUserNavigationEnabled(false);
setZoomGesturesEnabled()
Determina se o usuário pode pinçar para alterar o zoom.
      mSvp.setZoomGesturesEnabled(false);

Além disso, é possível determinar se os usuários podem ver nomes de ruas:

setStreetNamesEnabled()
Determina se o usuário pode ver nomes de ruas exibidos no solo.
      mSvp.setStreetNamesEnabled(false);

Definir a localização do panorama

Para definir a localização do panorama do Street View, chame StreetViewPanorama.setPosition() passando um LatLng. Também é possível passar radius como um parâmetro opcional. O raio é útil se você quer ampliar ou reduzir a área em que o Street View pesquisa um panorama correspondente. Um raio 0 significa que o panorama precisa estar vinculado exatamente ao LatLng especificado. O raio padrão é 50. Se houver mais de um panorama na área correspondente, a API retornará a melhor correspondência.

private static final LatLng SAN_FRAN = new LatLng(37.765927, -122.449972);
mSvp.setPosition(SAN_FRAN);

Como alternativa, é possível definir a localização com base em um ID de panorama passando um panoId para StreetViewPanorama.setPosition().

Para recuperar o ID de panorama para panoramas adjacentes, use antes getLocation() para recuperar um StreetViewPanoramaLocation. Esse objeto contém o ID do panorama atual e uma matriz de objetos StreetViewPanoramaLink. Cada objeto da matriz contém o ID de um panorama conectado ao panorama atual.

StreetViewPanoramaLocation location = mSvp.getLocation();
if (location != null && location.links != null) {
    mSvp.setPosition(location.links[0].panoId);
}

Aumentar e diminuir o zoom

É possível alterar o nível de zoom programaticamente definindo StreetViewPanoramaCamera.zoom. A definição do zoom como 1.0 aumenta a imagem por um fator de 2.

O fragmento a seguir usa StreetViewPanoramaCamera.Builder() para construir uma nova câmera com a inclinação e o rumo da câmera atual e aumenta o zoom em 50%.

private static final float ZOOM_BY = 0.5f;
StreetViewPanoramaCamera camera = new StreetViewPanoramaCamera.Builder()
    .zoom(mSvp.getPanoramaCamera().zoom + ZOOM_BY)
    .tilt(mSvp.getPanoramaCamera().tilt)
    .bearing(mSvp.getPanoramaCamera().bearing)
    .build();

Definir a orientação da câmera (ponto de vista)

É possível determinar a orientação da câmera do Street View definindo rumo e inclinação em StreetViewPanoramaCamera.

bearing
A direção apontada pela câmera, especificada em graus no sentido horário a partir do norte verdadeiro, em volta do centro da câmera. O norte verdadeiro é 0, o leste é 90, o sul é 180 e o oeste é 270.
tilt
A inclinação para cima ou para baixo do eixo Y. O intervalo varia de -90 a 0 e de 0 a 90, onde -90 aponta para baixo, 0 é centralizado no horizonte e 90 aponta para cima. A variação é medida a partir da inclinação inicial padrão da câmera, que é frequentemente (mas não sempre) o plano horizontal. Por exemplo, uma imagem capturada em uma colina provavelmente terá um valor padrão de inclinação não horizontal.

O fragmento a seguir usa StreetViewPanoramaCamera.Builder() para construir uma nova câmera com a inclinação e o rumo da câmera atual e altera o rumo 30 graus para a esquerda.

private static final int PAN_BY = 30;
StreetViewPanoramaCamera camera = new StreetViewPanoramaCamera.Builder()
    .zoom(mSvp.getPanoramaCamera().zoom)
    .tilt(mSvp.getPanoramaCamera().tilt)
    .bearing(mSvp.getPanoramaCamera().bearing - PAN_BY)
    .build();

O fragmento a seguir inclina a câmera 30 graus para cima.

float tilt = mSvp.getPanoramaCamera().tilt + 30;
tilt = (tilt > 90) ? 90 : tilt;

StreetViewPanoramaCamera previous = mSvp.getPanoramaCamera();

StreetViewPanoramaCamera camera = new StreetViewPanoramaCamera.Builder(previous)
    .tilt(tilt)
    .build();

Animar os movimentos da câmera

Para animar os movimentos da câmera, chame StreetViewPanorama.animateTo(). A animação efetua uma interpolação entre os atributos atuais da câmera e os novos atributos. Se você quiser pular diretamente para a câmera, sem animação, defina a duração como 0.

// Set the tilt to zero, keeping the zoom and bearing at current values.
// Animate over a duration of 500 milliseconds.
long duration = 500;
float tilt = 0;
StreetViewPanoramaCamera camera = new StreetViewPanoramaCamera.Builder()
    .zoom(mSvp.getPanoramaCamera().zoom)
    .bearing(mSvp.getPanoramaCamera().bearing)
    .tilt(tilt)
    .build();

mSvp.animateTo(camera, duration);

Enviar comentários sobre…

Google Maps Android API
Google Maps Android API
Precisa de ajuda? Acesse nossa página de suporte.