0

必要な値を含む JavaScript グローバル変数を作成したいと考えています。XML ファイルからいくつかの値を読み取り、それを使用して Google マップのマップを表示しました。この情報をいくつかの変数に保存し、ユーザーが要求したときに表示します。

私はこのコードを持っています:

var tot_pts = new Array(); //global variable

if (GBrowserIsCompatible()) { 

  // Display the map, with some controls and set the initial location 
  ...

  // A function to create the marker and set up the event window
  function createMarker(point,train) {
    var marker = new GMarker(point);
    return marker;
  }

  request.open("GET", "example.xml", true);
  request.onreadystatechange = function() {
    if (request.readyState == 4) {
      var xmlDoc = GXml.parse(request.responseText);
      //read value on XML
      tot_pts.push(new_path);

      //show all value on map
      for (var i = 0; i < tot_pts.length; i++) {
        point= [];
        point[0]=tot_pts[i].start;
        point[1]=tot_pts[i].end;
        map.addOverlay(new GPolyline(point,tot_pts[i].colour,3));
        marker = createMarker(tot_pts[i].start,tot_pts[i].train);
        map.addOverlay(marker);
        marker = createMarker(tot_pts[i].end,tot_pts[i].train);
        map.addOverlay(marker);
      }
    }//end of if request=4
  }// end of on ready...

  request.send(null);

}// end of compatible browser   

このコードの最後の「for ループ」を別の位置に移動すると、配列tot_ptsは空になります。なぜこれが起こるのですか?何らかの方法でコードを改善できますか?

4

1 に答える 1

0

request.readyState == 4 は、XMLHttpRequest の応答が準備できていることを意味します。したがって、応答を受け取ったら、ステップで配列 tot_pts に何らかの値 (new_path) をプッシュします -> tot_pts.push(new_path); それまでは、値が明示的に設定されていないため、配列は空で表示されます。

于 2013-03-15T13:33:16.410 に答える