2016-06-15 2 views
-1

У меня есть функция geoLocate(), которая находит введенное пользователем местоположение. Я хотел бы, чтобы эта функция находила местоположение рядом с текущим местоположением пользователя. Может ли кто-нибудь помочь?Найти близлежащие места

Когда я звоню geoLocate("McDonald's"), я бы хотел, чтобы он нашел ближайшего родственника McDonald относительно местоположения пользователя.

public void geoLocate(String searchString) throws IOException { 
    Geocoder gc = new Geocoder(this); 
    List<Address> list = gc.getFromLocationName(searchString, 3); 

    if (list.size() > 0) { 
     android.location.Address add = list.get(0); 
     String locality = add.getLocality(); 
     Toast.makeText(this, "Found: " + locality, Toast.LENGTH_SHORT).show(); 

     double lat = add.getLatitude(); 
     double lng = add.getLongitude(); 
     gotoLocation(lat, lng, 17); 

     if (marker != null) { 
      marker.remove(); 
     } 
     MarkerOptions options = new MarkerOptions().title(locality).position(new LatLng(lat, lng)); 
     marker = mMap.addMarker(options); 

    } else { 
     Toast.makeText(this, "No results found for: " + searchString, Toast.LENGTH_LONG).show(); 
    } 
} 

Найти текущее местоположение для справки:

public void setCurrentLocation() { 
    try { 
     Location currentLocation = LocationServices.FusedLocationApi.getLastLocation(mLocationClient); 
     if (currentLocation == null) { 
      Toast.makeText(this, "Couldn't connect!", Toast.LENGTH_SHORT).show(); 
     } else { 
      LatLng latLng = new LatLng(currentLocation.getLatitude(), currentLocation.getLongitude()); 
      CameraUpdate update = CameraUpdateFactory.newLatLngZoom(latLng, 15); 
      mMap.animateCamera(update); 

      if (myLocationMarker != null) { 
       myLocationMarker.remove(); 
      } 
      MarkerOptions options = new MarkerOptions().title(currentLocation.getLatitude() + 
        ", " + currentLocation.getLongitude()).position(latLng); 
      myLocationMarker = mMap.addMarker(options); 
     } 
    } catch (SecurityException e) { 
     e.printStackTrace(); 
     Toast.makeText(this, "My Location not enabled!", Toast.LENGTH_SHORT).show(); 
    } 
} 

ответ

1

После того как вы извлекли ваше текущее местоположение (широта, долгота), Вы можете использовать nearbysearch в Places API Web Service искать McDonnald в этом, как: https://maps.googleapis.com/maps/api/place/nearbysearch/json?location=lat,lon&radius=500&type=restaurant&name=mcdonalds&key=YOUR_API_KEY , Вы действительно можете построить этот URL с помощью StringBuilder вроде этого:

StringBuilder googlePlacesUrl = new StringBuilder("https://maps.googleapis.com/maps/api/place/nearbysearch/json?"); 
googlePlacesUrl.append("location=" + latitude + "," + longitude); 
googlePlacesUrl.append("&radius=" + PROXIMITY_RADIUS); 
googlePlacesUrl.append("&types=" + type); 
googlePlacesUrl.append("&name=mcdonalds"); 
googlePlacesUrl.append("&key=" + YOUR_GOOGLE_API_KEY); 

Вы затем сделать HTTP запрос на URL с помощью HTTP клиента выбора, а затем обработать результат (JSON). Это вернет места, соответствующие вашему поиску, и будет включать в себя окрестности каждого из этих мест.

Надеюсь, это даст вам несколько идей о том, как действовать. Пожалуйста, попробуйте и дайте мне знать, если это поможет.

Смежные вопросы