2012-09-17 14 views
6

20m圏内のどの銀行でもGoolge Places Pagesをlong/latで検索する必要があります。 このGoogle Places Docには、JavaScriptを使用して行う方法が記載されています。彼らは私がJavaに持っていないgoogle.maps.LatLngオブジェクトを使用しています。JavaでGoogleプレイス検索リクエストを送信するには

どのようにしてこのサービスに電話をかけることができますか?

多分Goolge Places用のJava APIもありますか?

最高のお礼、 キリスト教徒です。

編集1:私はので、私はそれを行う方法を見つけた上記のポストの

String url = baseUrl + "location=" + lat + "," + lon + "&" + 
       "radius=" + searchRadius + "&" + types + "&" + "sensor=true" + 
       "&" + "key=" + googleAPIKey; 

回答:編集2

私はsomeoneは、このようなURLを構築しました。これは、要求を送信する方法の例です:

public class GooglePlacesClient 
{ 
    private static final String GOOGLE_API_KEY = "***"; 

    private final HttpClient client   = new DefaultHttpClient(); 

    public static void main(final String[] args) throws ParseException, IOException, URISyntaxException 
    { 
     new GooglePlacesClient().performSearch("establishment", 8.6668310, 50.1093060); 
    } 

    public void performSearch(final String types, final double lon, final double lat) throws ParseException, IOException, URISyntaxException 
    { 
     final URIBuilder builder = new URIBuilder().setScheme("https").setHost("maps.googleapis.com").setPath("/maps/api/place/search/json"); 

     builder.addParameter("location", lat + "," + lon); 
     builder.addParameter("radius", "5"); 
     builder.addParameter("types", types); 
     builder.addParameter("sensor", "true"); 
     builder.addParameter("key", GooglePlacesClient.GOOGLE_API_KEY); 

     final HttpUriRequest request = new HttpGet(builder.build()); 

     final HttpResponse execute = this.client.execute(request); 

     final String response = EntityUtils.toString(execute.getEntity()); 

     System.out.println(response); 
    } 

} 

答えて

13

ここでのPlaces APIの検索、オートコンプリート、および詳細については、(JSONの解析と、いくつかの例外処理が含まれます)、より完全な例です。 Android用に書かれたものですが、Android以外のアプリケーション(org.jsonのライブラリをインクルードして別のログを使用する必要があります)に簡単に移植できます。 Placeクラスは単純な値オブジェクトです。 GoogleプレイスAPIを使用するための

package com.example.google.places; 

import org.json.JSONArray; 
import org.json.JSONException; 
import org.json.JSONObject; 

import android.util.Log; 

import java.io.IOException; 
import java.io.InputStreamReader; 
import java.net.HttpURLConnection; 
import java.net.MalformedURLException; 
import java.net.URL; 
import java.net.URLEncoder; 
import java.util.ArrayList; 

/** 
* @author saxman 
*/ 
public class PlacesService { 
    private static final String LOG_TAG = "ExampleApp"; 

    private static final String PLACES_API_BASE = "https://maps.googleapis.com/maps/api/place"; 

    private static final String TYPE_AUTOCOMPLETE = "/autocomplete"; 
    private static final String TYPE_DETAILS = "/details"; 
    private static final String TYPE_SEARCH = "/search"; 

    private static final String OUT_JSON = "/json"; 

    // KEY! 
    private static final String API_KEY = "YOUR KEY"; 

    public static ArrayList<Place> autocomplete(String input) { 
     ArrayList<Place> resultList = null; 

     HttpURLConnection conn = null; 
     StringBuilder jsonResults = new StringBuilder(); 
     try { 
      StringBuilder sb = new StringBuilder(PLACES_API_BASE); 
      sb.append(TYPE_AUTOCOMPLETE); 
      sb.append(OUT_JSON); 
      sb.append("?sensor=false"); 
      sb.append("&key=" + API_KEY); 
      sb.append("&input=" + URLEncoder.encode(input, "utf8")); 

      URL url = new URL(sb.toString()); 
      conn = (HttpURLConnection) url.openConnection(); 
      InputStreamReader in = new InputStreamReader(conn.getInputStream()); 

      int read; 
      char[] buff = new char[1024]; 
      while ((read = in.read(buff)) != -1) { 
       jsonResults.append(buff, 0, read); 
      } 
     } catch (MalformedURLException e) { 
      Log.e(LOG_TAG, "Error processing Places API URL", e); 
      return resultList; 
     } catch (IOException e) { 
      Log.e(LOG_TAG, "Error connecting to Places API", e); 
      return resultList; 
     } finally { 
      if (conn != null) { 
       conn.disconnect(); 
      } 
     } 

     try { 
      // Create a JSON object hierarchy from the results 
      JSONObject jsonObj = new JSONObject(jsonResults.toString()); 
      JSONArray predsJsonArray = jsonObj.getJSONArray("predictions"); 

      // Extract the Place descriptions from the results 
      resultList = new ArrayList<Place>(predsJsonArray.length()); 
      for (int i = 0; i < predsJsonArray.length(); i++) { 
       Place place = new Place(); 
       place.reference = predsJsonArray.getJSONObject(i).getString("reference"); 
       place.name = predsJsonArray.getJSONObject(i).getString("description"); 
       resultList.add(place); 
      } 
     } catch (JSONException e) { 
      Log.e(LOG_TAG, "Error processing JSON results", e); 
     } 

     return resultList; 
    } 

    public static ArrayList<Place> search(String keyword, double lat, double lng, int radius) { 
     ArrayList<Place> resultList = null; 

     HttpURLConnection conn = null; 
     StringBuilder jsonResults = new StringBuilder(); 
     try { 
      StringBuilder sb = new StringBuilder(PLACES_API_BASE); 
      sb.append(TYPE_SEARCH); 
      sb.append(OUT_JSON); 
      sb.append("?sensor=false"); 
      sb.append("&key=" + API_KEY); 
      sb.append("&keyword=" + URLEncoder.encode(keyword, "utf8")); 
      sb.append("&location=" + String.valueOf(lat) + "," + String.valueOf(lng)); 
      sb.append("&radius=" + String.valueOf(radius)); 

      URL url = new URL(sb.toString()); 
      conn = (HttpURLConnection) url.openConnection(); 
      InputStreamReader in = new InputStreamReader(conn.getInputStream()); 

      int read; 
      char[] buff = new char[1024]; 
      while ((read = in.read(buff)) != -1) { 
       jsonResults.append(buff, 0, read); 
      } 
     } catch (MalformedURLException e) { 
      Log.e(LOG_TAG, "Error processing Places API URL", e); 
      return resultList; 
     } catch (IOException e) { 
      Log.e(LOG_TAG, "Error connecting to Places API", e); 
      return resultList; 
     } finally { 
      if (conn != null) { 
       conn.disconnect(); 
      } 
     } 

     try { 
      // Create a JSON object hierarchy from the results 
      JSONObject jsonObj = new JSONObject(jsonResults.toString()); 
      JSONArray predsJsonArray = jsonObj.getJSONArray("results"); 

      // Extract the Place descriptions from the results 
      resultList = new ArrayList<Place>(predsJsonArray.length()); 
      for (int i = 0; i < predsJsonArray.length(); i++) { 
       Place place = new Place(); 
       place.reference = predsJsonArray.getJSONObject(i).getString("reference"); 
       place.name = predsJsonArray.getJSONObject(i).getString("name"); 
       resultList.add(place); 
      } 
     } catch (JSONException e) { 
      Log.e(LOG_TAG, "Error processing JSON results", e); 
     } 

     return resultList; 
    } 

    public static Place details(String reference) { 
     HttpURLConnection conn = null; 
     StringBuilder jsonResults = new StringBuilder(); 
     try { 
      StringBuilder sb = new StringBuilder(PLACES_API_BASE); 
      sb.append(TYPE_DETAILS); 
      sb.append(OUT_JSON); 
      sb.append("?sensor=false"); 
      sb.append("&key=" + API_KEY); 
      sb.append("&reference=" + URLEncoder.encode(reference, "utf8")); 

      URL url = new URL(sb.toString()); 
      conn = (HttpURLConnection) url.openConnection(); 
      InputStreamReader in = new InputStreamReader(conn.getInputStream()); 

      // Load the results into a StringBuilder 
      int read; 
      char[] buff = new char[1024]; 
      while ((read = in.read(buff)) != -1) { 
       jsonResults.append(buff, 0, read); 
      } 
     } catch (MalformedURLException e) { 
      Log.e(LOG_TAG, "Error processing Places API URL", e); 
      return null; 
     } catch (IOException e) { 
      Log.e(LOG_TAG, "Error connecting to Places API", e); 
      return null; 
     } finally { 
      if (conn != null) { 
       conn.disconnect(); 
      } 
     } 

     Place place = null; 
     try { 
      // Create a JSON object hierarchy from the results 
      JSONObject jsonObj = new JSONObject(jsonResults.toString()).getJSONObject("result"); 

      place = new Place(); 
      place.icon = jsonObj.getString("icon"); 
      place.name = jsonObj.getString("name"); 
      place.formatted_address = jsonObj.getString("formatted_address"); 
      if (jsonObj.has("formatted_phone_number")) { 
       place.formatted_phone_number = jsonObj.getString("formatted_phone_number"); 
      } 
     } catch (JSONException e) { 
      Log.e(LOG_TAG, "Error processing JSON results", e); 
     } 

     return place; 
    } 
} 
+0

あなたは私の人生を保存していただきありがとうございます :) – Kunal

+0

非常にThnks! –

10

A JavaライブラリはGitHubの上とMaven Centralで提供されています(情報開示:私は開発者です。)場所(または詳細、写真、など)のリストを取得することができます1行または2行で行うことができます。サンプルと詳細については、プロジェクトページを参照してください。

https://github.com/pushbit/sprockets

+0

クール、ありがとう:) – d0x

+0

これはクールです、ありがとうございました:) – Alex

1

GoogleプレイスAPIで利用可能な任意の公式のJavaライブラリが存在していません。しかし、Githubにはいくつかのプロジェクトがホストされています。もう1つはこれです: Google Places API Java Library on Github

+1

リンク先のリポジトリは元のプロジェクトのフォークです。元のレポは[こちら](https://github.com/windy1/google-places-api-java)にあります – Windwaker

+0

あります。 https://github.com/googlemaps/google-maps-services-java –

関連する問題