2012-06-22 44 views
0

我正在使用geoxml3和markerclusterer将kml文件解析为google maps api v3地图。这工作到目前为止。用geoxml3和markerclusterer解析KML文件

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> 

它正在输出节点“名称”或“描述”而不是“地址”。如果我尝试使用地址mark.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'文件。在 'VAR渲染=功能(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

谢谢,这个作品! –

相关问题