- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Google MapsのKMLをJSONで取得したい。)
Google MapsのKMLをJSONで取得する方法とstatus=0エラーの原因と解決方法
このQ&Aのポイント
- Google Mapsで作成したマイマップのKMLをJSON形式で取得する方法を紹介します。URLの末尾を「&output=kml」から「&output=json」に変更することでJSON形式で取得できます。
- ただし、実行するとstatus=0となってしまうことがあります。HTTPヘッダを確認する限り、取得は成功しているようですがなぜでしょうか?原因と解決方法を説明します。
- status=0エラーは通信が正常に完了しなかったことを示しています。原因としては、クロスオリジン制約によるものやネットワークの問題が考えられます。クロスオリジン制約に対応するためには、CORS(Cross-Origin Resource Sharing)を設定する必要があります。また、ネットワークの問題の場合は、ネットワーク接続の状態を確認する必要があります。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
まず、ご提示のソース正しくないです。 つっこみどころ満載です。 とりあえず、 var jsonUrl = 'url'; var xhr = new XMLHttpRequest(); xhr.onreadystatechange = function() { if (xhr.readyState == 4){ if (xhr.status == 200){ alert(xhr.responseText); var jresult = document.getElementById("json_panel"); jresult.innerHTML += xhr.responseText; }else{ alert (xhr.status); } } } xhr.open("GET", jsonUrl, true); xhr.send(null); として下さい。 その上で、0がアラートされれば、アクセスに失敗してるのです。 HTTPヘッダのレスポンスが200でも、外部サイトならアクセス出来ないので、 statusは0のままです。 ※クロスドメインアクセスの禁止って知ってますよね! さらに、JSONがとれたとして、 innerHTMLでつっこんでどおしようってんです。JSONはHTMLじゃないです。 単なるテキストです。 オブジェクト変数につっこんでパースしないと、どおしようもないでしょう。
お礼
ご返答ありがとうございます。 ・全体的にXHRの処理はMDCからコピーしたので正しいと思っていました。。。。 https://developer.mozilla.org/ja/XMLHttpRequest ご指摘ありがとうございます。 ・urlの";"は投稿の際の記述漏です。すみません。 ・innnerHTMLに突っ込んでるのは動作確認ようでした。 ・XHR lv2でクロスドメインで通信できるとあったのでいけるかと思ってました。 頂いたコードでも返ってきたコードは0だったので クロスドメインだからだめなのだと思います。 おとなしくローカルでやることにします。。。。 本当にありがとうございました。