gpt4 book ai didi

java - 反向地理编码获取街道名称Android

转载 作者:行者123 更新时间:2023-11-29 03:25:55 25 4
gpt4 key购买 nike

这是对我在这里发现的另一个问题的扩展: Finding nearest street given a lat-long location

OP 要求提供最近的街道名称,但给出的答案对我不起作用。我需要我住在爱尔兰的应用程序的街道名称,我们所有的道路都以字母后跟道路编号命名。根据道路等级,字母为 L、R、N 或 M。这是我的应用所需的信息。

使用地理编码器类对这些坐标进行反向地理编码:53.286288,-6.801891(就在“R”路上)给我区域名称而不是道路名称。在谷歌地图上,如果您输入坐标,它会显示为“R403”。

我的问题是如何使用 google api 的坐标获取最近的道路名称?如果在线谷歌地图可以报告道路名称,我有什么办法吗?

我查看了 Directions API,我也想知道我是否提供上述坐标作为起点和终点(因为我的应用程序只有当前位置,没有目的地) API 会返回道路名称吗?

最佳答案

借助 Direction API,您可以实现这一目标。我不经常使用这个 API,但是你可以使用这个得到你想要的:

http://maps.googleapis.com/maps/api/directions/json?origin=53.286288,-6.801891&destination=51,19&sensor=false

我把你的坐标放在原点。在结果中你可以看到一个 start_address :

start_address: "R403, Co. Kildare, Irlande",

或者不设置目的地:

http://maps.googleapis.com/maps/api/geocode/json?latlng=53.286288,-6.801891&sensor=false

formatted_address: "R403, Co. Kildare, Irlande",

编辑:调用和检索 Json

不要忘记在 list 中请求 Internet 许可

<manifest xlmns:android...>
...
<uses-permission android:name="android.permission.INTERNET"></uses-permission>
</manifest>

这是一种使用纬度和经度参数获取所需内容的方法。不要忘记在后台线程中调用它。 (您可以使用 AsyncTask 轻松完成)。

private void getRoadName(String lat, String lng) {

String roadName = "";
String url = "http://maps.googleapis.com/maps/api/geocode/json?latlng=__LAT__,__LNG__&sensor=false";

url = url.replaceAll("__LAT__", lat);
url = url.replaceAll("__LNG__", lng);

DefaultHttpClient httpclient = new DefaultHttpClient(new BasicHttpParams());
HttpGet httpget = new HttpGet(url);

InputStream inputStream = null;
String result = null;
try {
HttpResponse response = httpclient.execute(httpget);
HttpEntity entity = response.getEntity();

inputStream = entity.getContent();
// json is UTF-8 by default
BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream, "UTF-8"), 8);
StringBuilder sb = new StringBuilder();

String line = null;
while ((line = reader.readLine()) != null)
{
sb.append(line + "\n");
}
result = sb.toString();
} catch (Exception e) {
// Oops
}
finally {
try{if(inputStream != null)inputStream.close();}catch(Exception squish){}
}

JSONObject jObject = new JSONObject(result);
JSONArray jArray = jObject.getJSONArray("results");
if (jArray != null && jArray.size > 0) {
try {
JSONObject oneObject = jArray.getJSONObject(i);
// Pulling items from the array
roadName = oneObject.getString("formatted_address");
} catch (JSONException e) {
// Oops
}
}
}

解析 JSON 的代码:How to parse JSON in Android

关于java - 反向地理编码获取街道名称Android,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21002219/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com