Android将CID位置转换为坐标

Adr*_*ian 7 android google-api

我构建了一个Android应用程序,可以处理谷歌地图的共享意图并显示它的坐标.

问题是,他们发送了一个简短的网址,我使用Google的网址缩短API解码,在某些情况下,结果长链接属于这种类型:http://maps.google.com/?cid = 3635533832900933072&hl = en&gl = us .

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

mat*_*ash 6

据我所知,没有公共API来从cid获取位置.

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

(虽然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;
    }
}
Run Code Online (Sandbox Code Playgroud)

  • 似乎http://maps.google.com/maps?cid=%s&q=a&output=json不再有效.关于如何从cid获取坐标的任何其他想法? (4认同)

Nen*_*idt 1

在最新的 Google 地图更新中,共享意图包含正文中的地址名称,可以使用地理编码器将其解码为坐标。