エラー
ライン: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);
"gmaps/sirahamap.txt"の中身は次のとおりです。
{marker:[
{"name":"白浜町役場", "lat":33.67815773195126,
"lng":135.348140001297},
{"name":"富田事務所", "lat":33.65316415841283,
"lng":135.39743900299072}
]
}
"{}"は閉じられていると思うのですが、UTF-8になっていないというのはどういうことでしょうか?
初歩的なことを聞いて申し訳ないですが、ご教授願います。
これを見た限りでは特にエラーはなさそうですね。
ちなみに最初に投稿されたコードで検証してみましたが、問題ありませんでした。
ということは"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のエラーコンソールとかでエラー箇所を確認してみてください。
丁寧な説明ありがとうございます。
"sirahamap.txt"を文字エンコード「utf-8」で保存しなおしたらできました。
本当にありがとうございます。
こんなに早く解決できるとは本当に感謝!感謝!です。
これからも何かあればよろしくお願いします。