JSON形式のデータの読み込み

552 views
Skip to first unread message

zau

unread,
Nov 15, 2006, 11:56:25 PM11/15/06
to Google-Maps-API-Japan
JSON形式のデータを読み込んで、マップ上にマーカーを表示するサンプルをつくっています。
が、Firefoxで2.0は、エラーなく表示されるのですが、InternetExplorer6では下記のようなエラーがでて、マップは表示されるのですが、マーカーは表示されません。
何か、心当たりあれば、ご教授いただけると幸いです。

エラー

ライン:89
文字:5
エラー:'}'がありません。
コード:0
URL:xxxxxxxxx

エラー箇所のソースは次のとおりです。
// XMLHttpRequestによる読み込み
var request = GXmlHttp.create();
request.open("GET", "gmaps/sirahamap.txt", true);
// コールバック関数
request.onreadystatechange = function() {
if (request.readyState == 4) {
↓---エラー箇所-------------------------------------↓
eval("var res = " + request.responseText);
↑---エラー箇所-------------------------------------↑
for (var i = 0; i < res.marker.length; i++) {
var lat = res.marker[i].lat;
var lng = res.marker[i].lng;
var point = new GLatLng(lat, lng);
var marker = new GMarker(point);
map.addOverlay(marker);
}
}
}

// 送信
request.send(null);

Masashi.K

unread,
Nov 16, 2006, 12:38:57 AM11/16/06
to Google-Maps-API-Japan
>zauさん
たぶんそれは"gmaps/sirahamap.txt"ファイルが間違えています。
「{・・・}」が閉じていないか、UTF-8になっていないとかではないでしょうか。
確認してみてください。

zau

unread,
Nov 16, 2006, 12:48:47 AM11/16/06
to Google-Maps-API-Japan
Masashi.kさん、早速ありがとうございます。

"gmaps/sirahamap.txt"の中身は次のとおりです。

{marker:[
{"name":"白浜町役場", "lat":33.67815773195126,
"lng":135.348140001297},
{"name":"富田事務所", "lat":33.65316415841283,
"lng":135.39743900299072}
]
}

"{}"は閉じられていると思うのですが、UTF-8になっていないというのはどういうことでしょうか?
初歩的なことを聞いて申し訳ないですが、ご教授願います。

Masashi.K

unread,
Nov 16, 2006, 1:53:29 AM11/16/06
to Google-Maps-API-Japan
>zauさん

これを見た限りでは特にエラーはなさそうですね。
ちなみに最初に投稿されたコードで検証してみましたが、問題ありませんでした。

ということは"gmaps/sirahamap.txt"のエンコードが問題ではないかと思います。
UTF-8というのは、文字エンコードの種類です。
念のために(大まかに)解説しておきます。(知っていたら読み飛ばしてください)
Windowsで一般的に扱っている日本語エンコードは(メモ帳とかで普通に保存すると)Shift-JISです。
対してUnixで主に扱っている日本語エンコードはeuc-jpです。
Shift-JISとeuc-jpは1文字を表すのに1バイト+拡張バイトを使って表現します。
(文字により1バイトだったり、2バイトだったりします)
これを2バイトで表したのがUnicode(ユニコード)です。(大まかに言えば)
さらにこのUnicodeの中にもいろいろエンコードがあって、その中の1つが"UTF-8"なのです。
(詳細はhttp://ja.wikipedia.org/wiki/%E6%96%87%E5%AD%97%E3%82%B3%E3%83%BC%E3%83%89を参照)

で、Google
Mapsは基本的に"UTF-8"エンコードで扱います。
さきほど"sirahamap.txt"をShift-JISで保存して動揺のコードをFireFox2とIE7で実験してみたところ、
FireFox2ではOKでしたがIE7がダメでした。
(FireFox2はうまく処理してくれるみたいですね。)
このあたりはブラウザによって動作が異なるので、安定性を求めるなら扱うテキストファイル(txtとかHTMLとか)は
UTF-8エンコードにしておくのが良いでしょう。

ちなみにUTF-8で保存するのにはどうすればいいかというと
Windows標準のエディタではできないので、「秀丸」とか「TeraPad」を使って保存時の文字エンコードを
「UTF-8」にすればOKです。

それでダメなら、FireFox2のエラーコンソールとかでエラー箇所を確認してみてください。

松本浩樹

unread,
Nov 16, 2006, 2:25:17 AM11/16/06
to Google-Map...@googlegroups.com
> Masashi.Kさん

丁寧な説明ありがとうございます。

"sirahamap.txt"を文字エンコード「utf-8」で保存しなおしたらできました。

本当にありがとうございます。

こんなに早く解決できるとは本当に感謝!感謝!です。

これからも何かあればよろしくお願いします。

Reply all
Reply to author
Forward
0 new messages