La obtención de resultados de las inmediaciones de los lugares de Ubicación del Usuario usando el API de Google Maps en Android

Esta es la primera vez que utiliza google map API y google places API. Estoy haciendo una aplicación de demostración que muestra la lista de los hospitales (por ejemplo) más cercano a la ubicación del usuario con rutas para cada uno de los hospitales. He sido capaz de obtener la ubicación del usuario con el código de abajo:

public class MainActivity extends ActionBarActivity {
    private GoogleMap map;
    UiSettings mapSettings;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        map = ((MapFragment) getFragmentManager().findFragmentById(R.id.map)).getMap();

        if (map != null) {
           //map.addMarker(new MarkerOptions().position(myLocation).title("Start"));
            map.setMyLocationEnabled(true);
            mapSettings = map.getUiSettings();
            mapSettings.setScrollGesturesEnabled(true);
            mapSettings.setZoomControlsEnabled(true);
        }
    }
}

El archivo xml:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    android:paddingBottom="@dimen/activity_vertical_margin" tools:context=".MainActivity">

    <fragment
        android:id="@+id/map"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        class="com.google.android.gms.maps.MapFragment" />


</RelativeLayout>

Mi pregunta ¿cómo puedo obtener la lista de los hospitales el uso de google places API y la pantalla. Cualquier ayuda,consejos,tutorial o tutoriales realmente va a ser appericaited.Gracias de Antemano.

Cercanías para Android, el hno. Espero que esta ayuda ^^
De hecho, esto podría ayudar a…developers.google.com/places/web-service si alguien está buscando para json y no desea incluir mapas en sus aplicaciones

OriginalEl autor 9it3e1 | 2015-09-04

4 respuestas

  1. 16

    Para Android, traté de usar Place picker for Android. Se puede agregar el built-in place picker UI widget para su aplicación, de modo que los usuarios pueden elegir entre un conjunto de lugares cercanos muestran en un mapa. Es fácil de usar, sólo tienes que hacer es:

    int PLACE_PICKER_REQUEST = 1;
    PlacePicker.IntentBuilder builder = new PlacePicker.IntentBuilder();    
    startActivityForResult(builder.build(this), PLACE_PICKER_REQUEST);

    Se mostrará la interfaz de usuario de abajo para escoger un lugar para usted, y usted puede obtener la información de lugar mediante el uso de a continuación:

    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
      if (requestCode == PLACE_PICKER_REQUEST) {
        if (resultCode == RESULT_OK) {
            Place place = PlacePicker.getPlace(data, this);
            String toastMsg = String.format("Place: %s", place.getName());
            Toast.makeText(this, toastMsg, Toast.LENGTH_LONG).show();
        }
      }
    }

    La obtención de resultados de las inmediaciones de los lugares de Ubicación del Usuario usando el API de Google Maps en Android

    Para obtener más detalles, consulte la guía de aquí y el código aquí.

    Sin embargo, se puede establecer el tipo de lugar porque no cuentan para la Compilación de la interfaz de usuario.. Si usted realmente necesita para establecer, usted debe utilizar Google Places API Web Service API aquí, la búsqueda de la ubicación del mismo, analizar los datos en JSON y mostrar en su propia interfaz de usuario.

    Cerca de Búsqueda le permite buscar lugares dentro de un área especificada. Puedes refinar tu búsqueda por el suministro de palabras clave o especificando el tipo de lugar que usted está buscando.

    Una Cercanos solicitud de Búsqueda es un HTTP URL de la siguiente forma:

    https://maps.googleapis.com/maps/api/place/nearbysearch/output?parameters

    Tenga en cuenta que en los parámetros necesarios para establecer types=hospital

    EDITAR

    Ejemplo de cómo pasar de la petición de búsqueda de ubicaciones específicas en JSON usando el de google places web de API API API de servicio web.

    Solicitud

    location: -33.8670,151.1957
    radius: 500
    types: food
    name: cruise
    key: API_KEY

    Url para esto:

    https://maps.googleapis.com/maps/api/place/nearbysearch/json?location=-33.8670,151.1957&radius=500&types=food&name=cruise&key=API_KEY

    y la Respuesta JSON como este:

    {
       "debug_log" : {
          "line" : []
       },
       "html_attributions" : [],
       "logging_info" : {
          "experiment_id" : [],
          "query_geographic_location" : "AU"
       },
       "results" : [
          {
             "geometry" : {
                "location" : {
                   "lat" : -33.86879,
                   "lng" : 151.194217
                }
             },
             "icon" : "http://maps.gstatic.com/mapfiles/place_api/icons/restaurant-71.png",
             "id" : "21a0b251c9b8392186142c798263e289fe45b4aa",
             "name" : "Rhythmboat Cruises",
             "opening_hours" : {
                "open_now" : false,
                "weekday_text" : []
             },
             "photos" : [
                {
                   "height" : 426,
                   "html_attributions" : [
                      "\u003ca href=\"https://www.google.com/maps/views/profile/104066891898402903288\"\u003eRhythmboat Cruises\u003c/a\u003e"
                   ],
                   "photo_reference" : "CmRdAAAA-YL_I_Gk02blOX6S0nKHry8PFu9pDyp3Y9AnqISsa3Eq8mkbdD5mXuu1Fax60s0nSy3iiX-h5j-ztyLHcc1-782MsLQsgLLa4t3ZgDmCMll-a8ABapZGnZwDKByk67LFEhBgedv_u_eYFsEo9ay8jxJjGhTUHKPJ4G82vBJqSNliuv7UlAtclw",
                   "width" : 640
                }
             ],
             "place_id" : "ChIJyWEHuEmuEmsRm9hTkapTCrk",
             "reference" : "CnRmAAAAvQlMKw-XtxEY4vWFCvudF7CEMQGI5ycNbfVgGl9rAF75fdiPOiLJw1k9NL2v8ZIJsOJuRS3Lm9Dw1vga4ajycAs7PlxN1MVnnYT9la0pBvEvSQNlyvszKANS1R4P7Mvk_jhqswMggqCUtwJ13LN2hRIQOiAkLTWUi3DOjVVOw7J5IRoUb_cJyJaJNqKdmkDM2f0OjQjh9F0",
             "scope" : "GOOGLE",
             "types" : [ "restaurant", "food", "point_of_interest", "establishment" ],
             "vicinity" : "Pyrmont Bay Wharf (Near Australia Maritime Museum), Pyrmont, NSW 2009"
          },
          {
             "geometry" : {
                "location" : {
                   "lat" : -33.867591,
                   "lng" : 151.201196
                }
             },
             "icon" : "http://maps.gstatic.com/mapfiles/place_api/icons/restaurant-71.png",
             "id" : "a97f9fb468bcd26b68a23072a55af82d4b325e0d",
             "name" : "Australian Cruise Group",
             "opening_hours" : {
                "open_now" : false,
                "weekday_text" : []
             },
             "photos" : [
                {
                   "height" : 1331,
                   "html_attributions" : [
                      "\u003ca href=\"https://www.google.com/maps/views/profile/110751364053842618118\"\u003eAustralian Cruise Group\u003c/a\u003e"
                   ],
                   "photo_reference" : "CmRdAAAAtEoj29FJcNBccrsu6bHt0xgwVGhYlciCY1fe6gTr_d5_KkeP3LITnOwnpNRJWnX39B04-aIBOKXKJH6ltx948T5vWIYBoah1yZDXsWngWZ5kMsK7xyCB5P_q_xBIBxxUEhAYWeB4PiOm_Jy093fB-j0iGhSYmIs9xB2aa6u-RH8V8lZEk-Q5ig",
                   "width" : 2000
                }
             ],
             "place_id" : "ChIJrTLr-GyuEmsRBfy61i59si0",
             "reference" : "CnRqAAAAFbukrZvRNsc05TreHUCrPEya5NcN9v0fFLLaK-D1fSyxFTuQlUDhDstU3qwXKw_fADX4W6guUkexax1nufgiYIuGCKoZPEnup1r-LhGGNz9dn1uf9Of5iOtZ1XgCeDjJaYvGbSB3C0pAXL8r9kOsmhIQbx2Sia2DAWTjtSZwuh5aehoUhM6upqBCDLhGruZAGGsCOwAiIq8",
             "scope" : "GOOGLE",
             "types" : [
                "restaurant",
                "travel_agency",
                "food",
                "point_of_interest",
                "establishment"
             ],
             "vicinity" : "32 The Promenade, King Street Wharf 5, Sydney"
          },
          {
             "geometry" : {
                "location" : {
                   "lat" : -33.870943,
                   "lng" : 151.190311
                }
             },
             "icon" : "http://maps.gstatic.com/mapfiles/place_api/icons/bar-71.png",
             "id" : "e644f7f34cf875b9919c6548f1b721947362850a",
             "name" : "Lunch Cruise with Jazz on Sydney Harbour",
             "opening_hours" : {
                "open_now" : false,
                "weekday_text" : []
             },
             "photos" : [
                {
                   "height" : 292,
                   "html_attributions" : [
                      "\u003ca href=\"https://www.google.com/maps/views/profile/105423912060796272053\"\u003eFrom a Google User\u003c/a\u003e"
                   ],
                   "photo_reference" : "CmRdAAAAR4bqFTKYWdBwZwdBdON_JRD7V_joTwwIPwRUpZIZWkSSd8GQ3P2O-_aQbUJdL2RhoAyzCUIF0f--DI4oXFneTpj5zZfFq-iFiT7i_x0tjnDveIY8tJv-6o0uWSSjYqabEhCKqQWZqrKAoddjDcc64N48GhQZ2T1_ntPzNKCooHpZzlYQ7AxFOA",
                   "width" : 438
                }
             ],
             "place_id" : "ChIJLfySpTOuEmsRPCRKrzl8ZEY",
             "reference" : "CoQBewAAAFd2fO_YWGTiT4RzXWb5tsOuOt7YyV_ScQOwm0tqJSrAyACCczeOzV-P_mgZLro1oKP_34Nt0nVC_1OEKAQUcd7cUm7xmAMSX-EkbSWiD0kOWGgGgKuDRtb0t_8qsxBGU_izugWCyK7SRWezTxELYNdkS0OEiSWPnvhxvXuQktBBEhAAtEe7fagW2kUR14T1QpVsGhQBO7YpIyYSPvo4zUJuL_bX30nJZw",
             "scope" : "GOOGLE",
             "types" : [ "bar", "restaurant", "food", "point_of_interest", "establishment" ],
             "vicinity" : "37 Bank St, Pyrmont"
          }
       ],
       "status" : "OK"
    }

    El siguiente ejemplo devuelve una lista de hospitales, cerca de Londres, Inglaterra.

    https://maps.googleapis.com/maps/api/place/nearbysearch/json?location=51.503186,-0.126446&radius=5000&types=hospital&key=API_KEY

    Para más detalles, por favor consulte aquí.

    Gracias esto es exactamente lo que yo estaba buscando. Por favor, puedes darme un ejemplo de cómo pasar de la petición de búsqueda de ubicaciones específicas en JSON usando el de google places web de API API API de servicio web? Porque tengo la necesidad de búsqueda para que sean estáticos (he.e va a ser una constante búsqueda de un lugar e.g cines basado en la ubicación del usuario)Gracias de Antemano.
    Perdón por el retraso de la respuesta, estoy de vacaciones por CIERTO:) por Favor, consulte la edición en mi respuesta.
    la api de llave de paso en el enlace que estás hablando de Google API?
    developers.google.com/places/web-service/get-api-key
    gracias funciona

    OriginalEl autor bjiang

  2. 0
     private void loadNearByPlaces(double latitude, double longitude)
    
    //YOU Can change this type at your own will, e.g hospital, cafe, restaurant.... and see how it all works
    {
    
    
        mMap.clear();
        Intent i = getIntent();
        String type = hospital;
    
        StringBuilder googlePlacesUrl =
                new StringBuilder("https://maps.googleapis.com/maps/api/place/nearbysearch/json?");
        googlePlacesUrl.append("location=").append(latitude).append(",").append(longitude);
        googlePlacesUrl.append("&radius=").append(PROXIMITY_RADIUS);
        googlePlacesUrl.append("&types=").append(type);
        googlePlacesUrl.append("&sensor=true");
        googlePlacesUrl.append("&key=" + GOOGLE_BROWSER_API_KEY);
    
        JsonObjectRequest request = new JsonObjectRequest(googlePlacesUrl.toString(),
                new Response.Listener<JSONObject>() {
                    @Override
                    public void onResponse(JSONObject result) {
    
                        Log.i(TAG, "onResponse: Result= " + result.toString());
                        parseLocationResult(result);
                    }
                },
                new Response.ErrorListener() {
                    @Override
                    public void onErrorResponse(VolleyError error) {
                        Log.e(TAG, "onErrorResponse: Error= " + error);
                        Log.e(TAG, "onErrorResponse: Error= " + error.getMessage());
                    }
                });
    
        AppController.getInstance().addToRequestQueue(request);
    }

    Esta será la carga de la cerca del hospital, de acuerdo a su ubicación.

    OriginalEl autor Zia Ansari

  3. 0

    Siguen a continuación el código:

    private static final String TAG_RESULT = "predictions";
    JSONObject json;
    
    
    ArrayList<String> names;
    ArrayAdapter<String> adapter;
    String browserKey = "Google API key";
    //------------------------AutoComplete code--------------  
      public void updateList(String place) {
            String input = "";
    
            try {
                input = "input=" + URLEncoder.encode(place, "utf-8");
            } catch (UnsupportedEncodingException e1) {
                e1.printStackTrace();
            }
    
            String output = "json";
            String parameter = input + "&types=geocode&sensor=true&key="                + browserKey;
    
            url = "https://maps.googleapis.com/maps/api/place/autocomplete/"                + output + "?" + parameter;
    
            JsonObjectRequest jsonObjReq = new JsonObjectRequest(Request.Method.GET, url,
                    null, new Response.Listener<JSONObject>() {
    
                @Override            public void onResponse(JSONObject response) {
                    System.out.println("response"+response);
                    try {
    
                        JSONArray ja = response.getJSONArray(TAG_RESULT);
    
                        for (int i = 0; i < ja.length(); i++) {
                            JSONObject c = ja.getJSONObject(i);
                            String description = c.getString("description");
                            System.out.println("description"+description);
                            names.add(description);
                        }
    
                        adapter = new ArrayAdapter<String>(
                                getApplicationContext(),
                                android.R.layout.simple_list_item_1, names) {
                            @Override                        public View getView(int position,
                                                View convertView, ViewGroup parent) {
                                View view = super.getView(position,
                                        convertView, parent);
                                TextView text = (TextView) view
                                        .findViewById(android.R.id.text1);
                                text.setTextColor(Color.BLACK);
                                return view;
                            }
                        };
                        edittext_signup_city.setAdapter(adapter);
                        adapter.notifyDataSetChanged();
                    } catch (Exception e) {
                    }
                }
            }, new Response.ErrorListener() {
                @Override            public void onErrorResponse(VolleyError error) {
                }
            });
            AppController.getInstance().addToRequestQueue(jsonObjReq, "jreq");
        }

    OriginalEl autor Rohan Lodhi

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *