2017-05-09 3 views
1

Ich versuche, mithilfe der Google Places-API eine benutzerdefinierte Bereichsauswahl zu erstellen. Im Google Places-Picker-Steuerelement, wenn die Karte gescrollt wird, ändert sich die Position des Pins und die entsprechenden Orte in der Nähe der neuen Pin-Position werden abgerufen. In der Google Places-API für iOS/Android sehe ich nur eine API, um in der Nähe befindliche Orte vom aktuellen Standort des Geräts abzurufen.Wie aktualisiere ich Orte in der Nähe, wenn die Karte mit Google Places API gescrollt wird?

Es gibt Google Places WebService API, die verwendet werden kann, um Orte in der Nähe für einen beliebigen lat/long zu holen, aber ist es möglich durch die iOS/Android APIs?

Wie können wir Orte in der Nähe für eine bestimmte Koordinate abrufen, mit der über die Google Places-API für iOS/Android zu einer Karte gescrollt wurde?

Antwort

-1

Sie sollten die place picker verwenden, um einen benutzerdefinierten Speicherort auszuwählen.

Der folgende Code startet die Bereichsauswahl.

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

Mit dieser post-Methode für Orte in der Nähe

stellen Sie Ihren SEARCH TYPE und Radius in Metern.

String url = "https://maps.googleapis.com/maps/api/place/nearbysearch/json" + "?location=" + location.getLatitude() + "," + location.getLongitude() + "&radius=" + RADIUS_IN_METERS + "&type=" + SEARCH_TYPE + "&key=" + API_KEY; 
Log.d(TAG, url); 
Map<String, String> params = new HashMap<>(); 
JsonObjectRequest jsonObjectRequest = new JsonObjectRequest(Request.Method.POST, url, new JSONObject(params), 
    new Response.Listener<JSONObject>() {   
    @Override 
    public void onResponse(JSONObject response) { 
    try { 
      locationList = new ArrayList<>(); 
      JSONArray results = response.getJSONArray("results"); 
      for (int i = 0; i < results.length(); i++) { 
        JSONObject geometry = results.getJSONObject(i).getJSONObject("geometry"); 
        String name = results.getJSONObject(i).getString("name"); 
        String address = results.getJSONObject(i).getString("vicinity"); 
        String place_id = results.getJSONObject(i).getString("place_id"); 
        if (geometry != null) { 
          JSONObject location = geometry.getJSONObject("location"); 
          if (location != null) { 
            double latitude = location.getDouble("lat"); 
            double longitude = location.getDouble("lng"); 
            if (latitude != 0.0 && longitude != 0.0) { 
              Location markerLocation = new Location(SEARCH_TYPE); 
              markerLocation.setLatitude(latitude); 
              markerLocation.setLongitude(longitude); 
              Bundle bundle = new Bundle(); 
              bundle.putString("NAME", name); 
              bundle.putString("ADDRESS", address); 
              bundle.putString("PLACE_ID", place_id); 
              bundle.putString("TYPE", SEARCH_TYPE); 
              markerLocation.setExtras(bundle); 
              locationList.add(markerLocation); 
              Log.d(TAG, latitude + " " + longitude); 
             } 
            } 
           } 

          } 
          if (locationList.size() != 0) { 
           addMarkers(SEARCH_TYPE); 
          } 
          //Log.d(TAG,results.toString()); 
         } catch (JSONException e) { 
          e.printStackTrace(); 
         } 
        } 
       }, 
       new Response.ErrorListener() { 
        @Override 
        public void onErrorResponse(VolleyError error) { 

        } 
       } 
     ); 
    requestQueue.add(jsonObjectRequest); 
Verwandte Themen