我试图在谷歌地图上显示多个KML图层(都存储在同一个Fusion表格中),这些图层是基于用户通过复选框选择的。地图和复选框已经出现,但KML图层没有出现(通常我在地图窗口中得到平铺的“数据可能仍在加载”响应)。我的编码基于谷歌融合表示例(IN:披萨店)。
我对html& java,所以即使我在脚本中找不到任何错误,或者与this one等其他“帮助”页面的任何明显差异并不意味着某处没有错误。
我为每种图层类型写了很多这些:
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>
我的Fusion表格是:https://www.google.com/fusiontables/DataSource?docid=1J8YjRYnWprhLdL0YMP6lxxb_encjkowSlqi1G3Y#rows:id=1
答案 0 :(得分:0)
有一个拼写错误:
where = "'description' IN (" + filter.join(',') + ')'; //----------------^
代码中缺少 t 。