Android: Buscar lugares cercanos con la API de Google Places

Estoy intentando obtener una lista de los lugares cercanos usando la API de Google Places. He habilitado la API requried de la Consola de Google Devloper y tengo una clave de API válida. Puedo conseguir mi localización del corrent. Después de que conseguí mi la localización actual estoy intentando conseguir la lista de lugares cerca pero devuelve vacío.

También he intentado dar PlaceFilter null pero da el mismo resultado.

 private class MyGoogleMapOnMyLocationListener implements OnMyLocationChangeListener, ConnectionCallbacks, OnConnectionFailedListener { private GoogleApiClient mGoogleApiClient; @Override public void onMyLocationChange(Location location) { if (!hasLastLocation) { hasLastLocation = true; mLastLocation = location; Log.d(LOG_TAG, "Location: " + location.toString()); if (googleMap != null ) { googleMap.animateCamera(CameraUpdateFactory.newLatLngZoom( new LatLng(location.getLatitude(), location.getLongitude()), 16.0f)); if (mGoogleApiClient == null) { mGoogleApiClient = new GoogleApiClient .Builder(getActivity()) .addApi(Places.GEO_DATA_API) .addApi(Places.PLACE_DETECTION_API) .addConnectionCallbacks(this) .addOnConnectionFailedListener(this) .build(); mGoogleApiClient.connect(); } } } } @Override public void onConnected(Bundle bundle) { Log.d(LOG_TAG, "Google Api Client connected."); if (mGoogleApiClient != null) { Log.d(LOG_TAG, "Getting nearby places..."); PendingResult<PlaceLikelihoodBuffer> result = Places.PlaceDetectionApi.getCurrentPlace(mGoogleApiClient, null); result.setResultCallback(new ResultCallback<PlaceLikelihoodBuffer>() { @Override public void onResult(PlaceLikelihoodBuffer likelyPlaces) { Log.d(LOG_TAG, "Got results: " + likelyPlaces.getCount() + " place found."); for (PlaceLikelihood placeLikelihood : likelyPlaces) { Log.i(LOG_TAG, String.format("Place '%s' has likelihood: %g", placeLikelihood.getPlace().getName(), placeLikelihood.getLikelihood())); } likelyPlaces.release(); } }); } } @Override public void onConnectionSuspended(int i) { } @Override public void onConnectionFailed(ConnectionResult connectionResult) { } } 

Aquí está mi AndroidManifest.xml

Aquí está mi mapa Fragmento

He seguido las indtrucciones de la API de Google Places para Android

Y he tratado de aceptar la respuesta de esta pregunta: Mostrar la ubicación actual y lugares cercanos y la ruta entre dos lugares con Google Maps API en Android


ACTUALIZAR

He habilitado otras API relacionadas con el mapa de Google Developer Console y funcionó.

Usted puede reffer determinado código y demostración completa

 import org.apache.http.client.HttpResponseException; import android.util.Log; import com.google.api.client.googleapis.GoogleHeaders; import com.google.api.client.http.GenericUrl; import com.google.api.client.http.HttpRequest; import com.google.api.client.http.HttpRequestFactory; import com.google.api.client.http.HttpRequestInitializer; import com.google.api.client.http.HttpTransport; import com.google.api.client.http.javanet.NetHttpTransport; import com.google.api.client.http.json.JsonHttpParser; import com.google.api.client.json.jackson.JacksonFactory; @SuppressWarnings("deprecation") public class GooglePlaces { /** Global instance of the HTTP transport. */ private static final HttpTransport HTTP_TRANSPORT = new NetHttpTransport(); // Google API Key private static final String API_KEY = "<Your KEY>"; // Google Places serach url's private static final String PLACES_SEARCH_URL = "https://maps.googleapis.com/maps/api/place/search/json?"; private static final String PLACES_TEXT_SEARCH_URL = "https://maps.googleapis.com/maps/api/place/search/json?"; private static final String PLACES_DETAILS_URL = "https://maps.googleapis.com/maps/api/place/details/json?"; private double _latitude; private double _longitude; private double _radius; /** * Searching places * @param latitude - latitude of place * @params longitude - longitude of place * @param radius - radius of searchable area * @param types - type of place to search * @return list of places * */ public PlacesList search(double latitude, double longitude, double radius, String types) throws Exception { this._latitude = latitude; this._longitude = longitude; this._radius = radius; try { HttpRequestFactory httpRequestFactory = createRequestFactory(HTTP_TRANSPORT); HttpRequest request = httpRequestFactory .buildGetRequest(new GenericUrl(PLACES_SEARCH_URL)); request.getUrl().put("key", API_KEY); request.getUrl().put("location", _latitude + "," + _longitude); request.getUrl().put("radius", _radius); // in meters request.getUrl().put("sensor", "false"); if(types != null) request.getUrl().put("types", types); PlacesList list = request.execute().parseAs(PlacesList.class); // Check log cat for places response status Log.d("Places Status", "" + list.status); return list; } catch (HttpResponseException e) { Log.e("Error:", e.getMessage()); return null; } } /** * Searching single place full details * @param refrence - reference id of place * - which you will get in search api request * */ public PlaceDetails getPlaceDetails(String reference) throws Exception { try { HttpRequestFactory httpRequestFactory = createRequestFactory(HTTP_TRANSPORT); HttpRequest request = httpRequestFactory .buildGetRequest(new GenericUrl(PLACES_DETAILS_URL)); request.getUrl().put("key", API_KEY); request.getUrl().put("reference", reference); request.getUrl().put("sensor", "false"); PlaceDetails place = request.execute().parseAs(PlaceDetails.class); return place; } catch (HttpResponseException e) { Log.e("Error in Perform Details", e.getMessage()); throw e; } } /** * Creating http request Factory * */ public static HttpRequestFactory createRequestFactory( final HttpTransport transport) { return transport.createRequestFactory(new HttpRequestInitializer() { public void initialize(HttpRequest request) { GoogleHeaders headers = new GoogleHeaders(); headers.setApplicationName("AndroidHive-Places-Test"); request.setHeaders(headers); JsonHttpParser parser = new JsonHttpParser(new JacksonFactory()); request.addParser(parser); } }); } } 
  • OnMapReady no llamando aunque la visualización del mapa sin ningún error
  • Android Maps API v2 dibujar círculo
  • Cómo encontrar el nivel de zoom basado en círculo dibujar en el mapa
  • Google Map Api v2 muestra "V / GoogleSignatureVerifier: firma no válida" mensaje de error en el registro
  • Cómo hacer "uses-library" opcional en android
  • Cómo implementar mapa arrastrable como uber android, Actualizar con cambiar ubicación
  • Cómo dibujar una ruta utilizando diferentes valores long lat?
  • Mensaje de LogCat: no se encontraron los recursos de servicios de Google Play. Compruebe la configuración de su proyecto para asegurarse de que los recursos están incluidos
  • Deshabilitar el botón de selección mientras selecciona la ubicación de la ubicación anónima mediante la opción Colocar selector google API en android
  • Cómo ocultar los botones "Navegación" y "Puntero GPS" cuando hago clic en el marcador en el mapa google de Android
  • Google Maps Lite Mode causa jank en RecyclerView
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.