0

次のような XML ファイルがあります。

<datas>
<title>AAA</title>
<lat>111</lat>
<lng>5454</lng>
</datas>
<datas>
<title>BBB</title>
<lat>112121</lat>
<lng>544254</lng>
</datas>

....

例: 「実際の」例を次に示します。

<productFeed>
<Deal>
<Deal_ID>201090531</Deal_ID>
<Price>9.50</Price>
<Destination_Name>Green River</Destination_Name>
<Latitude>38.989869999999996</Latitude>
<Longitude>-110.13261</Longitude>
<Country_Name>United States of America</Country_Name>
</Deal>
</productFeed>

初期化機能:

function initialize() {
  var myOptions = {
    zoom: 7,
    center: new google.maps.LatLng(35.82672127366604,-118.916015625),
    mapTypeId: google.maps.MapTypeId.ROADMAP
  }
  map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);

  downloadUrl("test.xml", function(doc) {
      var xmlDoc = xmlParse(doc);
      var markers = xmlDoc.documentElement.getElementsByTagName("Deal");
      for (var i = 0; i < markers.length; i++) {
        var lat = parseFloat(markers[i].getAttribute("Latitude"));
        var lng = parseFloat(markers[i].getAttribute("Longitude"));
        var latlng = new google.maps.LatLng(lat,lng);
        var html = markers[i].getAttribute("Deal_ID");
        var label = markers[i].getAttribute("Price");
        var marker = createMarker(latlng,label,html);
        }
      });
    }

Google Map API はそれを読み取って地図上に表示できますか? もしそうなら、どのように?

このhttps://developers.google.com/maps/documentation/javascript/layers?hl=enを適応させようとしましたが、うまくいきません。

ご協力いただきありがとうございます。ドミニク

4

1 に答える 1

1

Google Maps Javascript API v3 には、XML 解析は含まれていません。ただし、javascript を使用して XML を解析し、結果を Google Maps Javascript API v3 マップに表示することはできます。

コードは現在、次の形式の XML を解析します。

 <Deal Latitude="38.989869999999996" Longitude="-110.13261" Deal_ID="201090531" Price="9.50" />

要素のテキスト コンテンツを返す geoxml3 の関数 ( など<lat>):

//nodeValue: Extract the text value of a DOM node, with leading and trailing whitespace trimmed
geoXML3.nodeValue = function(node, defVal) {
  var retStr="";
  if (!node) {
    return (typeof defVal === 'undefined' || defVal === null) ? '' : defVal;
  }
   if(node.nodeType==3||node.nodeType==4||node.nodeType==2){
      retStr+=node.nodeValue;
   }else if(node.nodeType==1||node.nodeType==9||node.nodeType==11){
      for(var i=0;i<node.childNodes.length;++i){
         retStr+=arguments.callee(node.childNodes[i]);
      }
   }
   return retStr;
};

Google Maps Javascript API v2 グループからの関連するディスカッション(ただし、v3 には GXml 機能がありません)。

別の関連する議論

于 2013-07-30T13:08:06.603 に答える