获取整个Google地图网页源代码而不仅仅是生成的KML文件进行解析

时间:2012-07-28 23:59:32

标签: android google-maps sax kml

我开发了一个Android应用程序,它使用Google地图并在地图上绘制从A点到B点的路径。我使用了this帖子中提到的方法,一切都运行正常。在过去的几天里,我在模拟器和手机上测试了结果,并成功绘制了路径路径。

但是,如果没有在代码中修改任何字符,今天我意识到路径路径绘图失败并且应用程序崩溃。正如我所料,我使用以下代码“构建”生成KML文件的uri链接:

public static String getUrl(double fromLat, double fromLon, double toLat,
        double toLon) {// connect to map web service
    StringBuffer urlString = new StringBuffer();
    urlString.append("http://maps.google.com/maps?f=d&hl=en");
    urlString.append("&saddr=");// from
    urlString.append(Double.toString(fromLat));
    urlString.append(",");
    urlString.append(Double.toString(fromLon));
    urlString.append("&daddr=");// to
    urlString.append(Double.toString(toLat));
    urlString.append(",");
    urlString.append(Double.toString(toLon));
    urlString.append("&ie=UTF8&0&om=0&output=kml");
    return urlString.toString();
}

此函数为kml文件返回类似“ http://maps.google.com/maps?f=d&hl=en&saddr=35.5133804,24.0421933&daddr=35.511732,23.974715&ie=UTF8&0&om=0&output=kml ”的Uri。但是,经过实验,我意识到现在使用与上面完全相同的KML链接,SAX解析器尝试解析整个Google地图网页源代码!当我的应用程序正在运行时,我正在下载生成的kml文件并在本地成功解析它,其形式如下:

?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="http://earth.google.com/kml/2.0">
    <Document>
    ...
    </Document>
</kml>

相比之下,现在下载的文件是整个Google地图网页,其格式如下:

<!DOCTYPE html><html xmlns:v="urn:schemas-microsoft-com:vml"> 
    <head> 
        <meta content="text/html;charset=ISO-8859-1" http-equiv="content-type"/>   
        <meta content="Find local businesses, view maps and get driving directions in 
        Google Maps" name="description"/> <link href="//maps.gstatic.com/favicon.ico" 
        rel="shortcut icon"/>   
        <noscript> <meta content="0; URL=/m/directions?dirflg=&amp;saddr=35.5133804,24.0421933&amp;daddr=35.511732,23.974715&
        amp;hl=en&amp;oi=nojs" http-equiv="refresh"/> </noscript> <title>
        ...

tick('ua');var id = 'none';if (event.target){id =  
closestParentId(event.target);}else if (event.srcElement){
id = closestParentId(event.srcElement);}
var firstUserAction = event.type + '-' + id;

当然,这是文字Google地图网页源,它显示了从我的PC查看页面时的路径路径。所以我的问题是,如果有人遇到过像这样开始发生的非常奇怪的问题。

谢谢!

2 个答案:

答案 0 :(得分:1)

同样在这里但我现在也使用apis: “http://maps.googleapis.com/maps/api/directions/json?origin=”+ startAdd +“&amp; destination =”+ endAdd +“&amp; sensor = true”;

答案 1 :(得分:0)

我会回答上面提到的原始问题,但我没有足够的声望点。所以,我在这里说明一下:

我将我的应用从使用KML迁移到JSON(它似乎到目前为止)的快速方法是关注this帖子。正如在帖子中提到的,我将输出从kml更改为dragdir并使用提供的算法来解密从Goole映射下载的文件。这样我就可以获得所有路由点并将它们应用到我的应用程序中进行进一步处理。

希望这可以帮助那些需要快速迁移项目的人。