2017-03-09 8 views
0

注:私は自分自身を教えています(つまり、Google)ので、質問や説明が愚かで単純な場合はおそらくそうです。私はサーバーの人で、このタイプのスクリプトを実行したことはありません(URLからデータを取得し、マップ上にプロットする)、私はユーザーに過ぎませんでした。私に親切にしてください。Googleマップ上でJavaScriptとプロットを使ってXMLファイルを解析する

タグでXML形式の気象データファイルを解析しようとしています。このファイルは、航空天気リンク(定期的に更新されています)からのものです。私のコードをテストするために、データ(約40K)をダウンロードしました。これは長い文字列です。

私の最終目標は、このリンクからデータを入力し、データを解析し、すべての座標を見つけ、座標対ごとにマーカーをプロットすることです。

データには、必要のないデータがたくさんあり、使用したいセクションがあります。ここに例があります:

<lots_of_stuff><area num_points="11"><point><longitude>-120.47</longitude><latitude>49.46</latitude></point><point><longitude>-114.13</longitude><latitude>49.17</latitude></point><point> ... 

このパターンは続きます。の値は、各セクションごとに異なります。 座標データの部分を使用すると、マーカーを正しく解析/プロットすることができます。小さなデータスニペットで動作するコードは次のとおりです。

<p id="demo"></p> 
<SCRIPT> 
var parser, xmlDoc; 
var text = "<point><longitude>-120.47</longitude><latitude>49.46</latitude></point>"; 

parser = new DOMParser(); 
xmlDoc = parser.parseFromString(text,"text/xml"); 
document.getElementById("demo").innerHTML = xmlDoc.getElementsByTagName("latitude")[0].childNodes[0].nodeValue + " " + xmlDoc.getElementsByTagName("longitude")[0].childNodes[0].nodeValue; 
</SCRIPT> 

私はプロットを表示していません。私が気づいたことの1つは、データスニペットのサイズを大きくすると、このコードは機能しないということです。たとえば、このテキストの値に対して、コードは失敗し、なぜ失敗するのかわかりません。

var text = "<point><longitude>-120.47</longitude><latitude>49.46</latitude></point><point><longitude>-114.13</longitude><latitude>49.17</latitude></point><point>"; 

1)上記のテキストの値が原因でコードが失敗するのはなぜですか? URLをロードするために

は、私がしようとしています:

parser = new DOMParser(); 
var script = document.createElement('script'); 
script.src = 'url_for_data'; 
xmlDoc = parser.parseFromString(script,"text/xml"); 

var lat = document.getElementsById("demo").innerHTML = xmlDoc.getElementsByTagName("latitude")[0].childNodes[0].nodeValue;alert(lat); 
var long = document.getElementsById("demo").innerHTML = xmlDoc.getElementsByTagName("longitude")[0].childNodes[0].nodeValue;alert(long); 

を私は何が起こっているのか確認するために、様々な場所でのアラート()たstatmentsを置きますが、私が見ていることである場合には100%を確認していないしました正しい。私は、URLの割り当てが正しいことを知っているが、データを見ることができませんでした。データが表示するには余りにも時間がかかりすぎるかもしれませんか?このサイトのDOMParserの制限ページを確認しようとしましたが、そのリンクにアクセスできません(私の仕事の接続では許可されない可能性があります)。

私はどのように進むべきかわかりません。

2)どうすればいいですか?

答えて

0

私は私の元の質問に対する少なくとも胸骨の答えを見つけたと信じています。以下のコードは、xmlファイルから座標を抽出します。ここから、私はそれをプロットする必要があります。時には初心者になるのは難しいです。

function myFunction(xml) { 
     var x, y, i, xmlDoc, latLng; 
     xmlDoc = xml.responseXML; 
     x = xmlDoc.getElementsByTagName('latitude'); 
     y = xmlDoc.getElementsByTagName('longitude'); 
     for (i = 0; i < x.length; i++) { 
      latLng = x[i].childNodes[0].nodeValue + y[i].childNodes[0].nodeValue; 
     } 
    } 
0

ここで最後のコードスニペットが動作します。

function PlotUm(xml) { 
    var x, y, i, txt, xmlDoc, latLng; 
    xmlDoc = xml.responseXML; 
    x = xmlDoc.getElementsByTagName('latitude'); 
    y = xmlDoc.getElementsByTagName('longitude');alert("FOR LOOP"); 
    for (var i = 0; i < x.length; i++) { 
     xcoord = x[i].childNodes[0].nodeValue; 
     ycoord = y[i].childNodes[0].nodeValue; 
     var latLng = new google.maps.LatLng(xcoord,ycoord); 
     var marker = new google.maps.Marker({ 
      position: latLng, 
      icon: 'http://maps.google.com/mapfiles/ms/micons/pink.png', 
      map: map 
     }); 
    } 
} 
関連する問題