初めての投稿なのでわかりずらかったら申し訳ありません。
google maps api for flashを使用して地図アプリを制作しています。
使用しているのはFlashCS5です。
環境はMacになります。
//example.xml
<?xml version="1.0" encoding="SHIFT-JIS"?>
<markers>
<marker lat="35.65769724633269" lng="139.7019875049591" eki="渋谷駅"/>
<marker lat="35.66515021658651" lng="139.7125232219696" eki="表参道"/>
<marker lat="35.67028408029107" lng="139.71755504608154" eki="外苑前" />
<marker lat="35.672768089361014" lng="139.7240674495697" eki="青山一丁目"/>
</markers>
上記のようなxmlを読み込んで地図上にに複数のマーカーを表示させたいのですが、エラーになりマーカーが表示できません。
実際のリストはかなりの量なのでfor文で処理したいのですが、ここの部分にマーカーを設置するスクリプトを書いていますがうまく機能していないようなのです。
同じ書き方でも他のイベント内に置く時はマーカーを表示してくれます。
※の所を隠すとfor文はxmlの内容をtraceできるので、xmlは読み込めてます。
ご教授願えないでしょうか?
よろしくお願いします。
ーーーエラーが起きるーーーー
//XMLを読み込む
var urlRequest:URLRequest = new URLRequest();
var xmlURL:String = "../example.xml";//読み込むxmlファイル
var urlLoader:URLLoader = new URLLoader();
var markerXML:XML;
urlRequest.url = xmlURL;
//ロード
urlLoader.load(urlRequest);
// 読み込み完了時に呼び出されるイベント
urlLoader.addEventListener (Event.COMPLETE,LoaderInfoCompleteFunc);
function LoaderInfoCompleteFunc(ev:Event) {
markerXML = new XML(urlLoader.data);
for(var i = 0; i < 4; i++){
var testPos:LatLng = new LatLng(markerXML..marker[i].@lat, markerXML..marker[i].@lng);
var markerIn:Marker = new Marker(testPos); //※
map.addOverlay(markerIn); //※
trace(markerXML..marker[i].@lat, markerXML..marker[i].@lng, markerXML..marker[i].@eki);
}
}
ーーーエラーが起きないーーー
map.addEventListener(MapEvent.MAP_READY, onMapReady);
function onMapReady(ev:Event):void {
map.setDoubleClickMode(MapAction.ACTION_NOTHING);
var centerPos:LatLng = new LatLng(35.66515021658651, 139.7125232219696);
map.setCenter(centerPos, 14, MapType.NORMAL_MAP_TYPE);
map.disableDragging();
map.addEventListener(TransformGestureEvent.GESTURE_PAN, onPan);
map.addEventListener(TransformGestureEvent.GESTURE_ZOOM, onZoom);
var centerOn:LatLng = new LatLng(35.65769724633269, 139.7019875049591);
var markerCe:Marker = new Marker(centerOn);
map.addOverlay(markerCe);
trace(centerOn);
}