the places how google for example clave cities address android google-places-api

how - Android Google Places API, getAutocompletePredictions devuelve el estado ''PLACES_API_ACCESS_NOT_CONFIGURED''



google places sdk (9)

Además de configurar la clave API y habilitar las API como lo han señalado otros, tuve que hacer lo siguiente:

  1. Configurar una cuenta de facturación (recibía el error "límite máximo excedido ..."
  2. Cambie a usar la biblioteca del cliente del SDK de Places como se describe aquí: https://developers.google.com/places/android-sdk/client-migration . (Tenga en cuenta que no elegí usar la biblioteca de compatibilidad ya que la versión de Google Play Services del Places SDK para Android se desactivará el 29 de julio de 2019).

Tengo problemas con la API de Android Google Places: función de autocompletar. Utilizo la misma clave que utilicé para la API de Android Google Maps (y en la documentación, está escrito, está bien). Aquí está mi definición en manifiesto:

<meta-data android:name="com.google.android.geo.API_KEY" android:value="mykey"/>

Pero getAutocompletePredictions devuelve el mensaje ''PLACES_API_ACCESS_NOT_CONFIGURED'' como estado.

Aquí está mi código Java:

GoogleApiClient googleApiClient = new GoogleApiClient.Builder(context) .addApi(Places.GEO_DATA_API) .addApi(Places.PLACE_DETECTION_API) .addConnectionCallbacks(this) .addOnConnectionFailedListener(this) .build(); googleApiClient.connect(); LatLngBounds latLngBounds = new LatLngBounds.Builder(). include(SphericalUtil.computeOffset(latlon, RADIUS, 0)). include(SphericalUtil.computeOffset(latlon, RADIUS, 90)). include(SphericalUtil.computeOffset(latlon, RADIUS, 180)). include(SphericalUtil.computeOffset(latlon, RADIUS, 270)).build(); PendingResult<AutocompletePredictionBuffer> result = Places.GeoDataApi.getAutocompletePredictions(googleApiClient, constraint.toString(), latLngBounds, null); AutocompletePredictionBuffer autocompletePredictions = result.await(Config.DATA_TIMEOUT, TimeUnit.MILLISECONDS); Status status = autocompletePredictions.getStatus(); if (status.isSuccess()) { Iterator<AutocompletePrediction> iterator = autocompletePredictions.iterator(); while (iterator.hasNext()) { AutocompletePrediction prediction = iterator.next(); //... do stuff here ... } } else { Log.d(TAG, status.getStatusMessage()); } autocompletePredictions.release(); googleApiClient.disconnect();

Gracias por adelantado


Creo que intentaste habilitar la API de Google Places para Android

Habilite esto también funciona. Puede encontrar esto debajo de la API de Google Places para Android

Google Places API Web Service


Después de mucho buscar y pasar mucho tiempo, descubrí que necesitamos reemplazar la implementación ''com.google.android.gms: play-services-places: 15.0.1''.

Reemplazar a la implementación ''com.google.android.libraries.places: places-compat: 1.0.0''

La demostración del código se puede encontrar en la siguiente ubicación: https://github.com/googlemaps/android-places-demos


Habilite la API de Google Places para Android en la consola de desarrolladores y compruebe en la página de credenciales que su clave aún está presente


Hola amigos, he resuelto con éxito este problema. Estaba implementando lugares Auto Complete Goole en mi aplicación. Esto fue proporcionado por los servicios de Google Play. Ahora, el problema principal es que Place SDK para Android está en desuso de los servicios de Google Play el 29 de enero. Ahora, se lanza un nuevo SDK en lugar de. Coloque sdk para Android. Ahora puede usar esta guía de migración para implementar place sdk en su proyecto. El enlace está disponible aquí.

Coloque la guía de migración de SDK para Android.

Consulte también la guía paso a paso sobre cómo implementar Autocompletar en su proyecto. Mire aquí esta guía paso a paso para implementar Autocompletar en nuestra aplicación.

Espero que esto te ayude. Gracias .....


Paso a paso Solución que sigo:

  • Simplemente vaya a https://console.developers.google.com/

  • abra su proyecto y haga clic en Biblioteca desde las pestañas izquierdas

  • Ahora, en las API móviles, haga clic en la API de Google Places para Android y habilite la API


Puede usar esta versión de la API de lugares como la dependencia.

implementation ''com.google.android.libraries.places:places-compat:1.1.0''


hay dos formas de hacer que su API de lugar funcione, ya sea por Intent o AutocompleteFragment, en el caso de la intención puede restringir su búsqueda a un país específico, pero lo mismo no es aplicable al AutocompleteFragment todavía. a continuación se muestra el código que funcionó para mí:

<fragment android:id="@+id/autocomplete_fragment" android:layout_width="match_parent" android:layout_height="wrap_content" android:name="com.google.android.libraries.places.widget.AutocompleteSupportFragment" app:layout_constraintLeft_toLeftOf="parent" app:layout_constraintRight_toRightOf="parent" app:layout_constraintTop_toTopOf="parent"/>

activityCode:

import android.os.Bundle; import android.support.annotation.NonNull; import android.support.v7.app.AppCompatActivity; import android.util.Log; import android.widget.Toast; import com.google.android.gms.common.api.Status; import com.google.android.libraries.places.api.Places; import com.google.android.libraries.places.api.model.Place; import com.google.android.libraries.places.widget.AutocompleteSupportFragment; import com.google.android.libraries.places.widget.listener.PlaceSelectionListener; import org.jetbrains.annotations.NotNull; import java.util.Arrays; public class AutocompleteFragmentActivity extends AppCompatActivity { private String TAG ="FRAGMENT_AUTOCOMPLETE"; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_autocomplete_fragment); /** * Initialize Places. For simplicity, the API key is hard-coded. In a production * environment we recommend using a secure mechanism to manage API keys. */ if (!Places.isInitialized()) { Places.initialize(getApplicationContext(), "API_KEY"); } // Initialize the AutocompleteSupportFragment. AutocompleteSupportFragment autocompleteFragment = (AutocompleteSupportFragment) getSupportFragmentManager().findFragmentById(R.id.autocomplete_fragment); assert autocompleteFragment != null; autocompleteFragment.setPlaceFields(Arrays.asList(Place.Field.ID, Place.Field.NAME)); autocompleteFragment.setOnPlaceSelectedListener(placeSelectionListener); } PlaceSelectionListener placeSelectionListener = new PlaceSelectionListener() { @Override public void onPlaceSelected(@NonNull Place place) { Log.i(TAG, "Place: " + place.getName() + ", " + place.getId()); Toast.makeText(AutocompleteFragmentActivity.this, place.getName()+", "+ place.getAddress(), Toast.LENGTH_SHORT).show(); } @Override public void onError(@NotNull Status status) { Log.i(TAG, "An error occurred: " + status); } }; }

clase de actividad para Intención

import android.app.Activity import android.content.Intent import android.os.Bundle import android.support.v7.app.AppCompatActivity import android.util.Log import android.widget.Toast import com.google.android.libraries.places.api.Places import com.google.android.libraries.places.api.model.Place import com.google.android.libraries.places.widget.Autocomplete import com.google.android.libraries.places.widget.AutocompleteActivity import com.google.android.libraries.places.widget.model.AutocompleteActivityMode import java.util.* class AutocompleteActivity : AppCompatActivity() { private var AUTOCOMPLETE_REQUEST_CODE = 0 private var TAG: String = "AUTOCOMPLETE_ACTIVITY" override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_autocomplete) if (!Places.isInitialized()){ Places.initialize(this, "API_KEY") } // val placesClient = Places.createClient(this) val fields = Arrays.asList(Place.Field.ID, Place.Field.NAME,Place.Field.ADDRESS) val intent = Autocomplete.IntentBuilder(AutocompleteActivityMode.FULLSCREEN, fields) .setCountry("NG") .build(this) startActivityForResult(intent,AUTOCOMPLETE_REQUEST_CODE) } override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) { super.onActivityResult(requestCode, resultCode, data) if (requestCode == AUTOCOMPLETE_REQUEST_CODE){ if (resultCode == Activity.RESULT_OK){ val place = Autocomplete.getPlaceFromIntent(data!!) Log.i(TAG,"Place: "+ place.name + ", "+ place.id) } else if (resultCode == AutocompleteActivity.RESULT_ERROR){ val status = Autocomplete.getStatusFromIntent(data!!) Log.i(TAG, status.statusMessage) } else if (resultCode == Activity.RESULT_CANCELED){ Toast.makeText(this@AutocompleteActivity, "You cancelled the operation", Toast.LENGTH_LONG).show() } } } }

No olvides agregar tus dependencias

dependencies { implementation ''com.google.android.gms:play-services-places:16.0.0'' implementation ''com.google.android.libraries.places:places:1.0.0'' }

Para que esto funcione, debes agregar ambos a tu archivo gradle. ¡Prueba esto, debería funcionar! :)


googleApiClient.connect(); debe llamarse en el método onMapReady de la interfaz OnMapReadyCallback.