我正在尝试根据用户通过复选框的选择在谷歌地图上显示多个 KML 图层(全部存储在同一个 Fusion 表中)。地图和复选框已经出现,但 KML 图层没有出现(通常我会在地图窗口中收到平铺的“数据可能仍在加载”响应)。我基于谷歌融合表示例(IN:披萨店)的编码。
我对 html 和 java 很陌生,所以即使我无法在我的脚本中找到任何错误,或者与像这样的其他“帮助”页面有任何明显差异,但这并不意味着某处没有错误。
我为每种图层类型写了一堆:
google.maps.event.addDomListener(document.getElementBId('trail'),
'click', function() {
filterMap(layer, tableId, map);
});
然后尝试过滤地图:
function filterMap(layer, tableId, map) {
var where = generateWhere();
if (where) {
if (!layer.getMap() ) {
layer.setMap(map);
}
layer.setOptions({
query: {
select: 'geometry',
from: tableId,
where: where
}
});
} else {
layer.setMap(null);
}
}
function generateWhere() {
var filter = [];
var stores = document.getElementsByName('store');
for (var i = 0, store; store = stores[i]; i++) {
if (store.checked) {
var storeName = store.value.replace(/'/g, '\\\'');
filter.push("'" + storeName + "'");
}
}
var where = '';
if (filter.length) {
where = "'descripion' IN (" + filter.join(',') + ')';
}
return where;
}
google.maps.event.addDomListener(window, 'load', initialize);
然后是 div 正文中的这些人:
<input type="checkbox" checked="checked" name="store"
id="trail" value="trail">
<label>trail</label>
<input type="checkbox" checked="checked" name="store"
id="Historic" value="Historic">
<label>Historic</label>
<input type="checkbox" checked="checked" name="store"
id="Energy" value="Energy">
<label>Energy</label>
<input type="checkbox" checked="checked" name="store"
id="Hunting/Fishing" value="Hunting/Fishing">
<label>Hunting/Fishing</label>