Pronto!

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

Ativar a API do Google Places para Android

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

  1. Criar ou selecionar um projeto
  2. Ativar a Google Places API for Android
  3. Criar chaves apropriadas
Continuar

Exibir atribuições

Ao exibir dados da Google Places API for Android, como resultados do preenchimento automático ou o nome e o endereço do local, há alguns requisitos de atribuição e de logotipo do Google que devem ser atendidos.

  1. Visão geral
  2. Exibir um mapa
  3. A atribuição "Powered by Google"
  4. Atribuições para conteúdo de terceiros

Visão geral

Os requisitos de atribuição e logotipo se encaixam nas seguintes categorias:

  • Um mapa do Google, se um mapa for exibido.
  • A atribuição "Powered by Google".
  • Atribuições para conteúdo fornecido por terceiros.

Os requisitos se aplicam ao widget de IU do seletor de local, bem como às chamadas de API programáticas. Se o aplicativo recupera um local por meio do seletor de local e, em seguida, exibe os dados em uma tela seguinte sem um mapa, ele deve exibir atribuições na tela seguinte.

Exibir um mapa

Não é preciso exibir um mapa. Se o aplicativo exibir dados da Places API em um mapa, esse mapa deverá ser do Google e ter o logotipo do Google visível. Aplicativos que exigem dados da Places API na mesma tela que um mapa do Google não precisam fornecer atribuições adicionais ao Google.

Observe que você ainda precisa exibir quaisquer atribuições para conteúdo de terceiros relevantes.

A atribuição "Powered by Google"

Se o aplicativo exibir dados da Places API em uma página ou exibição sem um mapa do Google, deve-se exibir uma imagem "Powered by Google" com esses dados. Por exemplo, se o aplicativo exibir uma lista de locais recuperados pela API em uma tela e um mapa do Google com esses locais em outra tela, a primeira tela deverá exibir a atribuição "Powered by Google".

A imagem "Powered by Google" está inclusa na biblioteca de serviços do Google Play nos tamanhos corretos para os aplicativos Android. Não é permitido redimensionar nem modificar essas imagens de nenhuma forma:

  • Para uso com segundo plano claro: @drawable/powered_by_google_light
  • Para uso com segundo plano escuro: @drawable/powered_by_google_dark

Atribuições para conteúdo de terceiros

Siga estas instruções para recuperar atribuições de terceiros do seletor de local ou de outras chamadas de API e para exibir as atribuições no aplicativo.

Recuperar atribuições do seletor de local

Para recuperar atribuições do seletor de local, chame PlacePicker.getAttributions() passando a Intent atual contendo o local que o usuário selecionou. O método retorna um string HTML ou null se não houver atribuições a exibir.

String thirdPartyAttributions = PlacePicker.getAttributions(intent);
if (thirdPartyAttributions == null) {
  thirdPartyAttributions = "";
}

Recuperar atribuições de um PlaceLikelihoodBuffer

Se o aplicativo exibir informações obtidas solicitando o local atual do dispositivo, ele também deverá exibir atribuições de terceiros para os detalhes do local obtido.

A API retorna um PlaceLikelihoodBuffer que contém uma lista de locais prováveis. Para recuperar atribuições do PlaceLikelihoodBuffer, chame PlaceLikelihoodBuffer.getAttributions(). O método retorna uma sequência de caracteres HTML ou null se não houver atribuições a exibir.

PendingResult<PlaceLikelihoodBuffer> result = Places.PlaceDetectionApi
    .getCurrentPlace(mGoogleApiClient, null);
result.setResultCallback(new ResultCallback<PlaceLikelihoodBuffer>() {
  @Override
  public void onResult(PlaceLikelihoodBuffer likelyPlaces) {
    final CharSequence thirdPartyAttributions =
        likelyPlaces.getAttributions();
    ...
  }
  likelyPlaces.release();
});

Recuperar atribuições de um PlaceBuffer

Se o aplicativo exibir informações obtidas chamando get place by ID, o aplicativo também deverá exibir atribuições de terceiros para os detalhes do local obtido.

A API retorna um PlaceBuffer que contém uma lista de locais. Para recuperar atribuições do PlaceBuffer, chame PlaceBuffer.getAttributions(). O método retorna uma sequência de caracteres HTML ou null se não houver atribuições a exibir.

Places.GeoDataApi.getPlaceById(mGoogleApiClient, placeId)
    .setResultCallback(new ResultCallback<PlaceBuffer>() {
  @Override
  public void onResult(PlaceBuffer places) {
    if (places.getStatus().isSuccess()) {
        ...
        final CharSequence thirdPartyAttributions =
            places.getAttributions();
    }
    places.release();
  }
});

Exibir atribuições para uma foto

Se seu aplicativo exibir fotos, é preciso mostrar atribuições para cada foto que as tiver. Para obter as atribuições de uma foto, chame PlacePhotoMetadata.getAttributions(). O método retorna uma sequência de caracteres HTML ou null se não houver atribuições a exibir.

Places.GeoDataApi.getPlacePhotos(mGoogleApiClient, placeId)
    .setResultCallback(new ResultCallback<PlacePhotoMetadataResult>() {
  @Override
  public void onResult(PlacePhotoMetadataResult photos) {
    if (photos.getStatus().isSuccess()) {
      // Get attribution for the first photo in the list.
      PlacePhotoMetadataBuffer photoResults = photos.getPhotoMetadata();
      if (photoResults.getCount() > 0) {
        PlacePhotoMetadata photo = photoMetadata.get(0);
        CharSequence attribution = photo.getAttributions();
      }
      photoResults.release();
    }
});

Exibir atribuições de terceiros

Atribuições para provedores terceiros incluem conteúdo em formato HTML que você deve exibir para o usuário no formato em que ele é fornecido. Qualquer link incluído no HTML deve ser preservado. Recomenda-se que o aplicativo exiba essas informações abaixo dos detalhes do local.

A API gera atribuições para todos os locais usados pelo aplicativo. As atribuições são fornecidas a cada chamada de API, não a cada local.

Uma forma de exibir as atribuições é com uma TextView. Por exemplo:

TextView attributionsText = (TextView) findViewById(R.id.attributions);
String thirdPartyAttributions = PlacePicker.getAttributions(intent);
if (thirdPartyAttributions == null) {
  thirdPartyAttributions = "";
}
attributionsText.setText(Html.fromHtml(thirdPartyAttributions));

Exemplo de uma atribuição de terceiros

Listings by <a href="https://www.example.com/">Example Company</a>

Enviar comentários sobre…

location_on
Google Places API for Android