1

私は、Google マップを使用し、マップ上のポイント 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 マップの Web ページのソース コード全体を解析しようとすることに気付きました。アプリが動作しているときに、生成された kml ファイルをダウンロードし、ローカルで正常に解析しました。これは次の形式でした。

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

対照的に、ダウンロードされたファイルは Google マップの Web ページ全体であり、次の形式になっています。

<!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;

もちろん、これは私の PC からページを表示したときにルート パスを表示する文字通りの Google マップ Web ページ ソースです。だから私の質問は、誰かがこのように起こり始めた同じ非常に奇妙な問題を経験したかどうかです.

ありがとうございました!

4

2 に答える 2

1

ここでも同じですが、API も使用しています。

于 2012-08-02T13:06:34.057 に答える
0

上記の元の質問に答えたはずですが、十分な評判ポイントがありません。そこで、ここに次のように述べます。

アプリを KML から JSON に移行するために私が行った手っ取り早い方法は、この投稿に従うことです。投稿で言及されているように、出力を kml から dragdir に変更し、提供されたアルゴリズムを使用して、Goole マップからダウンロードしたファイルを復号化しました。このようにして、すべてのルーティング ポイントを取得し、アプリに適用してさらに処理することができました。

これが、プロジェクトを移行するための迅速な方法を必要としている人々に役立つことを願っています.

于 2012-07-29T12:56:33.757 に答える