2016-06-15 181 views
-1

我有一個功能geoLocate()找到用戶輸入的位置。我希望這個功能能夠找到用戶當前位置附近的位置。誰能幫忙?查找附近的地方

當我打電話geoLocate("McDonald's")時,我希望它找到與用戶位置相關的最近麥當勞。

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

一旦檢索您的當前位置(緯度,經度),你可以使用Places API Web Servicenearbysearch搜索McDonnald是這樣的: https://maps.googleapis.com/maps/api/place/nearbysearch/json?location=lat,lon&radius=500&type=restaurant&name=mcdonalds&key=YOUR_API_KEY 。您可以使用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客戶的選擇做出HTTP請求的URL,然後處理結果(JSON)。這將返回與您的搜索相匹配的地點,並將包括這些地點中的每一個地點附近。

我希望這給你一些關於如何進行的想法。請嘗試一下,讓我知道它是否有幫助。