对于20米范围内的任何银行,我需要通过long / lat搜索Goolge Places Pages。 Google商家信息文档介绍了如何使用JavaScript。 他们正在使用我在Java中没有的google.maps.LatLng对象。

现在有人如何拨打该服务?

也许Goolge Places还有一个Java API?

最诚挚的问候,基督徒。

编辑1:

我发现有人像这样构建网址:

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

答案:编辑2:

我因为上面的帖子我发现了怎么做。 这是如何发送请求的示例:

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

}

#1楼 票数:16 已采纳

这是Places API搜索,自动完成和详细信息的更完整示例(包括JSON解析和一些异常处理)。 它是为Android编写的,但可以轻松移植到非Android使用(需要包含org.json库并使用不同的日志记录)。 Place类是一个简单的值对象。

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

#2楼 票数:12

GitHub和Maven Central提供了一个用于使用Google Places API的Java库(披露:我是开发人员。)获取一个地方列表(或详细信息,照片等)可以在一行或两行中完成。 有关示例和设置详细信息,请参阅项目页面。

https://github.com/pushbit/sprockets

#3楼 票数:1

Google Places API不存在任何官方Java库。 但是,Github上有几个项目。 另一个是: Github上的Google Places API Java库

  ask by d0x translate from so

未解决问题?本站智能推荐:

2回复

从Google地方信息获取数据时出错

我正在尝试从Google Places API获取位置,但没有任何价值。 我总是遇到相同的错误,我也不知道为什么。 我总是得到的错误是: 06-22 15:42:08.456:D / GetDataFromURL(22138):ResponseCode:200 06-
1回复

“ Google地方信息” API中可以保证哪些JSON标签?

使用Google Places API服务时,是否肯定会存在JSON对象列表? 我假设“ geometry”,“ location”和“ name”将始终在JSON页面中返回,但是我发现很难在“ opening_hours”仅出现在某些位置的情况。 我需要为不保证存在的条目添加额外的try
2回复

带有Floatingsearchview的Google地方信息自动完成功能

早上好,我目前有一个使用AutoCompleteTextView运行的自定义Google Places自动完成功能,但是我需要使用以下库Floatingsearchview来实现它,但是我找不到解决方法,让我们看看是否可以帮助我。 谢谢
1回复

通过JSON将位置详细信息添加到Google地方信息

我正在向使用Google Places API的Android应用程序中添加位置,并且当我搜索这些位置时,我得到了名称,纬度和经度,但无法获取格式化的地址或格式化的电话号码。 我想知道是否无法添加位置详细信息,例如地址,电话号码,网站等,还是我做错了什么。 这是我正在使用的HTTP帖子:
1回复

为什么我不能实施Google地方API?

我正在尝试通过Google实施Place Picker API。 但每次我开始活动时,它都会立即关闭。 实施场地选择器的代码: API密钥已在我的清单文件中声明: Logcat错误: 即使我的帐户启用了Google地方信息,为什么会出现此错误? 注意:我还设
1回复

如何使用Java中的改造从Google附近的搜索API检索图像网址

我试图通过Retrofit从Google Places API(附近搜索)在Android的recyclerview中检索图像。 如何检索图像并将毕加索的图像加载到我的图像保持器中 这是结果的回应 在这里,我想在适配器中检索图像并使用picasso在imageview中显示它。
1回复

特定于国家/地区的Google地方信息自动完成服务(街道城市州邮政编码)

我正在使用Google地方信息自动完成服务,需要过滤特定于国家/地区的地方! 参考网站: -https : //www.grubhub.com (特定国家/地区,国家/地区邮政编码) 我发现了一个示例: -http : //plnkr.co/QjPEczt6AosghVP8EHNV
1回复

如何使用纬度,经度和半径(距离)将区域划分为更小尺寸的区域,在Google中使用Java搜索API?

我在Java中使用谷歌雷达地点搜索API。 我使用特定区域的纬度,经度和半径(距离)来提出请求。 我得到大约200个响应(此API的最大响应)。 如果我得到200个回复,我必须使用纬度和经度将我的请求分成更小的尺寸,以便我可以覆盖圆的整个区域以获取有关该区域中所有位置的详细信息。 那么,