- ベストアンサー
GoogleMap APIマーカーマネージャーとXMLの読み込み
- GoogleMap APIマーカーマネージャーとXMLの読み込みについての質問です。
- 質問者はGoogle Codeのページで提供されているマーカーマネージャーを使用し、GDownloadUrlでXMLを読み込んで地図を作成しようとしています。
- 質問者はマーカーマネージャーを設定しているが、最終的にマーカーが表示されない問題に直面しています。どこが問題なのか、また他の解決方法があれば教えて欲しいとしています。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
おや、と試しに投稿されているソースを そのままコピペして、XMLだけ適当に作って試したらちゃんと動きましたよ。 ただし、 var markers = xml.documentElement.getElementsByTagName("marker"); だけ var markers = xml.getElementsByTagName("marker"); に変えました。
その他の回答 (1)
- yyr446
- ベストアンサー率65% (870/1330)
試していませんが、 function createMap(data) { var xml = GXml.parse(data); var markers = xml.documentElement.getElementsByTagName("marker"); for (var i = 0; i < markers.length; i++) { var name = markers[i].getAttribute("name"); var lat = parseFloat(markers[i].getAttribute("lat")); var lng = parseFloat(markers[i].getAttribute("lng")); var markeropts = new Object(); markeropts.title = name; var marker = new GMarker(new GPoint(lng,lat), markeropts); batch.push(marker); // ※1 } return batch; } の中の var marker = new GMarker(new GPoint(lng,lat), markeropts); を var marker = makeMarher(new GPoint(lng,lat),markeropts); として、 関数の外に function makeMarher(arg1,arg2){ var marker=new GMarker(arg1,arg2); return marker; } としてみて下さい。 それから、現状どっちでもだいじょうぶですが、地理座標 (経緯度)は GPoint(lng,lat)よりGLatLng(lat,lng) を使います。
お礼
ありがとうございます。 残念ながら解決しませんでした。 現段階で、 function getMarkers() { GDownloadUrl("○○○.xml", createMap); return batch; } でbatchの中にマーカーのポイントが正しく格納されていれば表示されることは確認しております。 ↓これはうまく動く ----- function getMarkers() { addMakers(); return batch; } function addMakers() { var markeropts = new Object(); markeropts.title = "六本木"; var marker = new GMarker(new GPoint(35.66332844365397,139.7321891784668), markeropts); batch.push(marker); return batch; } ----- createMapの中でbatchにポイントを入れ込んでいますが、この方法が正しくないようなのです。perlだとグローバル変数の値をサブルーチン内で変更すればサブルーチンから出たときにそのグローバル変数の値も変わっていますが、どうやらjavascriptだとそうではない、というところまではなんとなくわかったのですが…
お礼
参考URLのソースをコピペさせていただき私のものと比較したところ、 私の mgr = new MarkerManager(map); //<== GmapsUtilityLibraryのマーカーマネージャー をyyr446様がお使いになった mgr = new GMarkerManager(map); //<== GoogleMapsAPIのマーカーマネージャー に変更したらちゃんと動きました。 とても助かりました。 ありがとうございました。