2013-03-27 95 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