2013-07-30 7 views
0

У меня есть XML-файл, как это:Google Map Api v3 и 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, но не работает.

Благодарим за помощь. Dominique

+1

что "рад"? Это должно быть «прочитано»? Эти цифры не соответствуют широте и долготе (в аренду в стандартной системе координат Google Maps), это просто случайные числа или их необходимо преобразовать в [WGS84] (http://en.wikipedia.org/wiki/WGS84) ? – geocodezip

+0

Да, читайте. Lat и lng - примеры, а не истинные данные. Просто для объяснения структуры файла xml. – dommm063

+0

Есть ли причина, по которой вы не можете поместить свой XML в формат, который ожидает ваш код? – geocodezip

ответ

1

API Javascript Google Maps v3 не содержит анализа XML. Но вы можете анализировать XML с помощью javascript и отображать результаты на карте 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; 
}; 

relevant discussion from the Google Maps Javascript API v2 group (но v3 не имеют функциональность GXml).

another relevant discussion

+0

ОК. Любой пример карты, отображающей маркеры из файла XML, такого как мой? – dommm063

+0

Я знаю, что видел их, не мог найти легко. Ваш формат похож на (но не идентичный) некоторые RSS/Atom-каналы. Сторонний парсер KML [geoxml3] (https://code.google.com/p/geoxml3/) содержит код для анализа содержимого XML-элемента [nodeValue] (https://code.google.com/p /geoxml3/source/browse/branches/polys/geoxml3.js), добавлен в ответ. – geocodezip

+0

ОК. Если у вас есть полный пример и работа, не стесняйтесь. – dommm063