1

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

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 mark.address 输出此内容,则未定义将写入信息窗口。

我的问题是,我怎样才能解析这个地址信息?

这是我的代码:

$(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");
  }

非常感谢!

托尼

4

1 回答 1

1

修改“geoxml3.js”文件。在 'var render = function (responseXML, doc)' 中,placemark 定义为:

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之类的标签。

于 2012-06-22T14:42:31.517 回答