如何控制KmlLayer上Google地图信息窗口的内容?

时间:2016-05-15 09:47:40

标签: javascript kml arcgis infowindow

我在谷歌地图上有一个KML图层,其中包含许多多边形。单击每个多边形时,将使用默认的Google地图信息窗口显示属性表中的数据。这是代码:

google.maps.event.addListener(kmlLayer, 'click', function(event) {
var content = event.featureData.infoWindowHtml;
var testimonial = document.getElementById('capture');
testimonial.innerHTML = content;

是否可以只显示部分属性数据而不是信息窗口中的每一列?它目前显示多边形背后的所有数据。这是一个信息窗口的图像,所以例如我想只显示'名称' '镇'和' KM2'信息窗口中的数据:

{{3}}

1 个答案:

答案 0 :(得分:3)

一种选择是使用suppressInfoWindows:true kmlOption,然后使用您想要的任何内容创建自己的信息窗口。

KmlLayer click event包含KML中的KmlFeatureData,您可以对其进行解析以自定义显示的信息。

  

KmlFeatureData对象规范

     

单击KML功能时返回的JSON格式的单个KML功能的数据。此对象中包含的数据镜像与声明它的KML或GeoRSS标记中的功能相关联的数据。

     

<强>属性

     
      
  • 作者类型:KmlAuthor
  •   
     

从图层标记中提取的要素<atom:author>。(如果已指定)。

     
      
  • description类型:字符串
  •   
     

从图层标记中提取的要素<description>

     
      
  • id类型:字符串
  •   
     

从图层标记中提取的要素<id>。如果未指定,则将为此功能生成唯一ID。

     
      
  • infoWindowHtml类型:字符串
  •   
     

该功能的气球样式文本(如果已设置)。

     
      
  • name类型:字符串
  •   
     

从图层标记中提取的要素<name>

     
      
  • 代码段类型:字符串
  •   
     

从图层标记中提取的要素<Snippet>

代码段

function initialize() {
  var map = new google.maps.Map(
    document.getElementById("map_canvas"), {
      center: new google.maps.LatLng(37.4419, -122.1419),
      zoom: 13,
      mapTypeId: google.maps.MapTypeId.ROADMAP
    });
  var kmllayer = new google.maps.KmlLayer({
    map: map,
    url: "http://www.geocodezip.com/geoxml3_test/us_states.xml",
    suppressInfoWindows: true
  });
  var infowindow = new google.maps.InfoWindow();
  google.maps.event.addListener(kmllayer, 'click', function(evt) {
    infowindow.setContent(evt.featureData.name);
    infowindow.setPosition(evt.latLng);
    infowindow.open(map);
  })

}
google.maps.event.addDomListener(window, "load", initialize);
html,
body,
#map_canvas {
  height: 100%;
  width: 100%;
  margin: 0px;
  padding: 0px
}
<script src="https://maps.googleapis.com/maps/api/js"></script>
<div id="map_canvas"></div>