2017-08-10 4 views
0

近くのガソリンスタンドは次のコードを使用して検索できますが、どうすれば最も近いものを見つけることができますか?アンドロイドのGoogleマップv2を使用して最寄りのガソリンスタンドを検索し、そのルートを表示したい

StringBuilder googlePlacesUrl = new StringBuilder("https://maps.googleapis.com/maps/api/place/nearbysearch/json?"); 
     googlePlacesUrl.append("location=" + source.latitude + "," + source.longitude); 
     googlePlacesUrl.append("&radius=" + PROOXIMITY_RADIUS); 
     googlePlacesUrl.append("&types=" + "gas_station"); 
     googlePlacesUrl.append("&sensor=true"); 
     googlePlacesUrl.append("&key=" + GOOGLE_API_KEY); 

上記のコードを使用して、私は最も近いガソリンスタンドを取得するためのURLを作成しています。

public String read(String httpUrl){ 
     String httpData = ""; 
     InputStream stream = null; 
     HttpURLConnection urlConnection = null; 
     try{ 
      URL url = new URL(httpUrl); 
      urlConnection = (HttpURLConnection) url.openConnection(); 
      urlConnection.connect(); 
      stream = urlConnection.getInputStream(); 
      BufferedReader reader = new BufferedReader(new InputStreamReader(stream)); 
      StringBuffer buf = new StringBuffer(); 
      String line = ""; 
      while((line = reader.readLine()) != null){ 
       buf.append(line); 
      } 
      httpData = buf.toString(); 
      reader.close(); 
     } catch (Exception e) { 
      Log.e("HttpRequestHandler" , e.getMessage()); 
     } finally { 
      try { 
       stream.close(); 
       urlConnection.disconnect(); 
      } catch (Exception e){ 
       Log.e("HttpRequestHandler" , e.getMessage()); 
      } 
     } 

     return httpData; 
    } 

この後、私は応答を解析しています。

しかし、私が最も近いものを見つけるしたいのか、私がやりたいのですか?私は緯度と経度を使って距離を計算することができますが、もっと簡単な方法があると思いますか?

誰でも助けてくれますか?

答えて

1

最も単純な方法は、あなたの要求にrankby=distanceパラメータを使用しています。

lbby - 結果が表示される順序を指定します。 radius(上記のRequired parametersで説明)が指定されている場合は、rankbyを含めてはいけないことに注意してください。可能な値は以下のとおりです

プロミネンス(デフォルト)。このオプションは、重要度に基づいて結果をソートします。ランキングは、指定されたエリア内の目立つ場所を優先します。注目度は、Googleのインデックスにおける順位、世界的な人気などの要因によって影響を受ける可能性があります。

距離。このオプションは、検索結果を指定された場所からの距離だけ昇順に偏らせます。距離が指定された場合、キーワード、名前、またはタイプの1つ以上が必要です。

https://developers.google.com/places/web-service/search#PlaceSearchRequests

コードスニペットは以下の通りです(あなたがradiusを削除し、追加rankby

StringBuilder googlePlacesUrl = new StringBuilder("https://maps.googleapis.com/maps/api/place/nearbysearch/json?"); 
googlePlacesUrl.append("location=" + source.latitude + "," + source.longitude); 
googlePlacesUrl.append("&rankby=distance"); 
googlePlacesUrl.append("&type=" + "gas_station"); 
googlePlacesUrl.append("&key=" + GOOGLE_API_KEY); 

また、もう昔とはない非推奨に使用したsensorパラメータを削除することができます。 typesパラメータが無効であることに注意してください。typeをドキュメントに従って使用する必要があります。

- 指定したタイプに一致する場所に結果を限定します。 1つのタイプのみを指定できます(複数のタイプが指定されている場合は、最初の入力に続くタイプはすべて無視されます)。

最も近いガソリンスタンドが最初に応答します。

こちらがお役に立てば幸いです。

+0

ありがとうございましたxomena。それは本当に助けになりました。 –

関連する問題