1

目立つ場所に基づいて近くの場所を検索するためのコードをいくつか作成しました。次に、ユーザーからの昇順の距離に基づいてアプリの検索場所を設定したいと思います。そのためには、を使用する必要があるrankby=distancerankby、の値を許可しないことを学びました。そのradiusため、次の半径ベースの検索は機能しません。

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

人々が同様の質問をするブログや記事をいくつか見ましたが、どれもうまくいくように見える答えを提供しませんでした。上記でない場合、私は何を使用する必要がありますか?

4

3 に答える 3

7

正しいのはrankBy=distance...

B首都を維持するrankBy...

于 2013-01-21T07:27:39.670 に答える
1

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

public PlacesList search(二重緯度、二重経度、二重半径、文字列タイプ)は例外をスローします{

    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:22:42.147 に答える
0

あなたはそれをバイパスすることができます。「GOOGLEPLACESWEBSERVICES」を使用しました https://developers.google.com/places/webservice/search

  1. PLACES APIを使用してすべての場所のJSONを取得します(HttpURLConnectionを使用してリクエストを送信します):

    String nearByPlaceSearchURL =  "https://maps.googleapis.com/maps/api/place/nearbysearch/json?"
                    + "location=" + myLatPosition + "," + myLonPosition
                    + "&radius=" + myPlaceDistanceMeters
                    + "&types=" + myPlaceName
                    + "&key=" +  MyConstants.KEY_FOR_PLACES_AND_DISTANCES_API;
    
  2. 返されたJSONを解析し、各場所の座標LAT/LONを取得します。

  3. DISTANCE MATRIX APIを使用して、現在の位置から各場所までのすべての距離のJSONを取得します。

      String distancesSearchURL = "https://maps.googleapis.com/maps/api/distancematrix/json?"
            + "origins=" + myLatPosition + "," + myLonPosition
            + "&destinations=" + allPlacesCoordinates
            + "&mode=walking"
            + "&key=" + MyConstants.KEY_FOR_PLACES_AND_DISTANCES_API; 
    

    距離は、私たちが関心を持っている距離である、ウォーキング、ドライブ、またはサイクリングの距離であることに注意してください。半径距離(空気距離)は関係ありません。徒歩/運転/自転車の距離は空中距離よりも大きいため、たとえば半径10 kmの場所を検索できますが、そこまでの徒歩距離は11kmになります。

  4. 名前と現在の位置からの距離を内部変数として、場所ごとにオブジェクトを作成します。

  5. すべてのオブジェクトの場所を含むArrayListを生成します。

  6. メソッドコンパレータを使用して、距離に従ってArrayListを並べ替えます。
于 2015-03-29T18:33:19.303 に答える