2012-06-22 4 views
0

Я использую geoxml3 и markerclusterer для анализа файла kml на карте google maps api v3. это работает до сих пор.проанализировать файл KML с помощью geoxml3 и markerclusterer

В файле kml хранится несколько информации.

<Placemark> 
    <name>Manfred Mustermann</name> 
    <description>Manfred Mustermann</description> 
    <Point> 
     <coordinates>7.0964850607874,51.781641735074,0</coordinates> 
    </Point> 
    <address>Musterstr. 29 Aachen, 52070 Nordrhein-Westfalen</address> 
    <styleUrl>#0</styleUrl> 
</Placemark> 

Он работает для вывода узлов «имя» или «описание», но не «адрес». Если я попытаюсь вывести это с помощью метки place.address, undefined будет записан в информационное окно.

Мой вопрос: как я могу разобрать и этот адрес информации?

вот мой код:

$(document).ready(function(){ 
var myOptions = { 
     zoom: 3, 
     mapTypeId: google.maps.MapTypeId.ROADMAP 
    }; 

    var mcOptions = {gridSize: 80, maxZoom: 15}; 
    markers = []; 

    var map = new google.maps.Map(document.getElementById("map-canvas"), myOptions); 
    markerclusterer = new MarkerClusterer(map, [], mcOptions); 
    var infoWindow = new google.maps.InfoWindow({maxWidth:800}); 

    var myParser = new geoXML3.parser({ 
    map: map, 
    singleInfoWindow:true, 

    createMarker:function(placemark){ 
      var point = new google.maps.LatLng(placemark.point.lat, placemark.point.lng); 
      var con = "<pre>" + placemark.description + "<br /><br />" + placemark.address + "</pre>"; 
      var marker = new google.maps.Marker({position:point}); 
      markers.push(marker); 

      google.maps.event.addListener(marker, "click", function(){ 
       infoWindow.content = con; 
       infoWindow.open(map, marker); 
      }); 
      markerclusterer.addMarker(marker); 
    } 
}); 
    myParser.parse('dat.kml'); 
    }); 

    function clickMarker(i){ 
     google.maps.event.trigger(markers[i], "click"); 
    } 

Спасибо большое!

Toni

ответ

0

Измените файл 'geoxml3.js. В «вар визуализации = функция (responseXML, DOC)», метка определяется как:

placemark = { 
     name: geoXML3.nodeValue(node.getElementsByTagName('name')[0]), 
     description: geoXML3.nodeValue(node.getElementsByTagName('description')[0]), 
styleUrl: geoXML3.nodeValue(node.getElementsByTagName('styleUrl')[0]) 
}; 

Изменить его добавить:

address: geoXML3.nodeValue(node.getElementsByTagName('address')[0]) 

Имейте в виду, что добавление адреса тега KML не в стандартах KML. Лучше использовать тег, например ExtendedData https://developers.google.com/kml/documentation/extendeddata#entityreplacement.

+0

спасибо, это работает! –