0

rankBy=distance を使用して場所のリストを距離でソートし、その距離をリストビューのビジネス名の横に表示するにはどうすればよいですか?

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;
}
4

2 に答える 2

2

私は現在これに取り組んでいます。

  1. Google Places API ドキュメントに記載されているように、rankBy=distance に「radius」パラメータを含めないでください。
  2. 場所のリストを取得したら、各場所の住所と緯度/経度を取得できるように、各場所の詳細を取得するために別の呼び出しを行う必要があります。
  3. 次に、現在地を使用して、結果の各場所からの距離を計算します。
于 2013-03-28T20:43:47.820 に答える
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;
    }
}
于 2013-10-28T13:13:13.530 に答える