我写了一些代码,根据它们的突出程度搜索附近的地方。接下来,我想根据与用户之间的递增距离获取我的应用搜索位置。为此,我了解到我需要使用rankby=distance,但是rankby不允许使用radius的值-因此以下基于半径的搜索无效:

nearPlaces = googlePlaces.search(
    gps.getLatitude(),
    gps.getLongitude(),
    radius,
    types
);


我看过几个博客和文章,人们都在问类似的问题,但是没有一个提供似乎有效的答案。如果不是以上所述,我应该使用什么?

最佳答案

私有静态最终字符串PLACES_SEARCH_URL =“ https://maps.googleapis.com/maps/api/place/search/json?rankby=distance&”;

公共场所列表搜索(双纬度,双经度,双半径,字符串类型)
            引发异常{

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

}

10-07 20:50