gpt4 book ai didi

Android 将 CID 位置转换为坐标

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:52:00 28 4
gpt4 key购买 nike

我构建了一个 Android 应用程序,它可以处理来自 Google map 的共享 Intent 并显示它的坐标。

问题是他们发送了一个短 url,我用 Google 的 url shortner api 对其进行解码,在某些情况下,结果长链接是这种类型的:http://maps.google.com/?cid=3635533832900933072&hl=en&gl=us .

任何人都可以帮助我如何获得 "cid=3635533832900933072" 的对应坐标

最佳答案

据我所知,没有公共(public) API 可以从 cid 获取位置。

但是,一个可能的解决方法是解析 Google map 输出以获取纬度和经度(尽管它可能很脆弱,如果它们更改结果格式)。

(虽然 url 包含 output=json,但它实际上不是 json——这就是为什么我用 substring() 等解析它而不是使用 JSONObject).

试试这段代码:

public static LatLng getCidCoordinates(String cid)
{
final String URL_FORMAT = "http://maps.google.com/maps?cid=%s&q=a&output=json";
final String LATLNG_BEFORE = "viewport:{center:{";
final String LATLNG_AFTER = "}";
final String LATLNG_SEPARATOR = ",";
final String LAT_PREFIX = "lat:";
final String LNG_PREFIX = "lng:";

try
{
HttpClient client = new DefaultHttpClient();
HttpGet get = new HttpGet(String.format(URL_FORMAT, cid));
HttpResponse response = client.execute(get);

String text = EntityUtils.toString(response.getEntity(), "UTF-8");

int startIndex = text.indexOf(LATLNG_BEFORE);
if (startIndex == -1)
return null;

startIndex += LATLNG_BEFORE.length();
int endIndex = text.indexOf(LATLNG_AFTER, startIndex);

// Should be "lat:<number>,lng:<number>"
String[] parts = text.substring(startIndex, endIndex).split(LATLNG_SEPARATOR);
if (parts.length != 2)
return null;

if (parts[0].startsWith(LAT_PREFIX))
parts[0] = parts[0].substring(LAT_PREFIX.length());
else
return null;

if (parts[1].startsWith(LNG_PREFIX))
parts[1] = parts[1].substring(LNG_PREFIX.length());
else
return null;

return new LatLng(Double.parseDouble(parts[0]), Double.parseDouble(parts[1]));
}
catch (NumberFormatException e)
{
e.printStackTrace();
return null;
}
catch (IOException e)
{
e.printStackTrace();
return null;
}
}

关于Android 将 CID 位置转换为坐标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23968937/

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