1

我开发了一个使用谷歌地图并在地图上绘制从 A 点到 B 点的路线路径的 Android 应用程序。我已经使用了这篇文章中提到的方法,一切正常。这几天在模拟器和手机上测试了结果,路由路径绘制成功。

然而,在没有修改任何代码的情况下,今天我意识到路线路径绘制失败并且应用程序崩溃了。正如我所期望的那样,我使用以下代码来“构建”用于 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>

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

<!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 上查看页面时,它会显示路线路径。所以我的问题是,是否有人遇到过像这样开始发生的同样非常奇怪的问题。

谢谢!

4

2 回答 2

1

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

于 2012-08-02T13:06:34.057 回答
0

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

我将我的应用程序从使用 KML 迁移到 JSON 的一种快速方法是关注这篇文章。正如帖子中提到的,我将输出从 kml 更改为 dragdir 并使用提供的算法来解密从 Goole 地图下载的文件。通过这种方式,我可以获得所有路由点并将它们应用到我的应用程序以进行进一步处理。

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

于 2012-07-29T12:56:33.757 回答