我在谷歌地图上有一个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}}
答案 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>