2016-06-15 19 views
-1

私はユーザ入力場所を見つけるgeoLocate()の機能を持っています。この関数は、ユーザーの現在地付近の場所を見つけることができます。誰も助けることができますか?近くの場所を検索

私がgeoLocate("McDonald's")と電話をすると、ユーザーの所在地に最も近い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

あなたの現在の位置(緯度、経度)を取得したら、あなたはMcDonnaldのこのようなを検索するためのPlaces API Web Servicenearbysearchを使用できます。 https://maps.googleapis.com/maps/api/place/nearbysearch/json?location=lat,lon&radius=500&type=restaurant&name=mcdonalds&key=YOUR_API_KEY 。あなたが実際にこのようなStringBuilderを使用して、このURLを構築することができます。

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)を処理します。これはあなたの検索に合った場所を返し、これらの場所のそれぞれの周辺を含みます。

今後の進め方についてお聞かせください。それが役立つかどうか試してみてください。

関連する問題