2013-03-27 164 views
0

我如何使用rankBy =距離排序的距離名單的地方,並顯示該名單旁邊的業務名單旁邊的列表視圖?谷歌地點api排名的距離

protected String doInBackground(String... args) { 
    googlePlaces = new GooglePlaces();      
    try { 
     String types = null; 
     double radius = 400; 
     nearPlaces = googlePlaces.search(gps.getLatitude(),gps.getLongitude(), radius, types); 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } 
    return null; 
} 

回答

2

你可以使用這個搜索URL來實現你所描述的:

private static final String PLACES_SEARCH_URL = "https://maps.googleapis.com/maps/api/place/search/json?rankby=distance&"; 

public PlacesList search(double latitude, double longitude, double radius, String types) throws Exception { 
    this._latitude = latitude; 
    this._longitude = longitude; 
    this._radius = radius; 
    //this._rankby=_rankby; 

    try { 
     HttpRequestFactory httpRequestFactory = createRequestFactory(HTTP_TRANSPORT); 
     HttpRequest request = httpRequestFactory.buildGetRequest(new GenericUrl(PLACES_SEARCH_URL)); 
     request.getUrl().put("key", API_KEY); 
     request.getUrl().put("location", _latitude + "," + _longitude); 
     // request.getUrl().put("radius", _radius); 
     request.getUrl().put("rankBy", _radius); 
     // in meters 
     request.getUrl().put("sensor", "false"); 
     //request.getUrl().put("rankby", _rankby); 
     if(types != null) { 
      request.getUrl().put("types", types); 
     } 

     PlacesList list = request.execute().parseAs(PlacesList.class); 
     // Check log cat for places response status 
     Log.d("Places Status", "" + list.status); 
     return list; 
    } catch (HttpResponseException e) { 
     Log.e("Error:", e.getMessage()); 
     return null; 
    } 
} 
2

我目前正在自己​​的工作。

  1. 如Google Places API文檔所述,不要在rankBy = distance中包含「radius」參數。
  2. 一旦你得到了地方名單,你將不得不再次打電話來獲得每個地方的詳細信息,以便你可以得到地址& Lat/Lng爲每個地方。
  3. 然後使用當前位置,計算結果中每個位置的距離。
+0

如何計算它@Eldon Elledge ???你有我能看到的任何例子嗎? – PropK 2013-04-03 09:19:59

+0

有沒有例子? @EldonElledge – PropK 2013-04-05 11:30:48

+0

項目符號1是有幫助的。 – 2015-08-14 18:17:13