单击时是否可以将特定点处的所有多边形数据(描述&名称)组合到一个InfoWindow中?我有一些重叠的多边形,InfoWindow只显示最顶层的数据。看起来应该可以在地图上使用Fusion Tables和click click listener,这样当有人点击地图时,查询将发送到Fusion Tables以查找与点击点相交的所有多边形(使用ST_INTERSECTS和CIRCLE和一个非常小的半径)。我的Fusion Table中唯一的列是Name,Description和Geometry(包含标准KML)。重叠多边形点击时合并InfoWindow数据?
这就像我一样。多边形正在显示,圆形正在渲染并居中点击。 InfoWindow正在显示[object Object]。
var lat = 37.4;
var lng = -122.1;
var tableid = '1mxcz4IDL1U7ItrqulVzt01fMasj5zsmBFUuQh6iM';
var meters = 10000;
layer = new google.maps.FusionTablesLayer({
query: {
select: 'geometry',
from: tableid,
}
});
layer.setMap(map);
google.maps.event.addListener(layer, 'click', function(event) {
changeCenter(event);
});
function changeCenter(event) {
lat = event.latLng.lat();
lng = event.latLng.lng();
circle.setCenter(event.latLng);
}
circle = new google.maps.Circle({
center: new google.maps.LatLng(lat, lng),
radius: meters,
map: map,
fillOpacity: 0.2,
strokeOpacity: 0.5,
strokeWeight: 1,
});
comboname = new google.maps.FusionTablesLayer({
query: {
select: 'name',
from: tableid,
where: 'ST_INTERSECTS(geometry, CIRCLE(LATLNG(' + lat + ',' + lng + '),' + meters + '))'
}
});
google.maps.event.addListener(layer, 'click', function(e) {
// Display all of the names in the InfoWindow
e.infoWindowHtml = comboname;
});
}
听起来应该工作。你试过了吗? – geocodezip
添加上面的代码,仍然没有运气。 –
我使用'PostGIS'->'geoJSON'->'[layerName] = new google.maps.Data(); k.addGeoJson(geoJSON,[etc]);'而不是FusionTables。我发现要做到这一点的唯一方法就是将点击的'latLng'带回到PostGIS并执行所有的数据查询。遍历数据层的特征(通过'k.ForEach(function(feature){}),并将几何结果放入一系列'Polygon'对象中,但却无法获得'containsLocation([ clickEvent.latLng],[feature.geometry])'效用函数正确触发。 –