Google maps api 3 从谷歌地图上Fusion Tables图层的信息窗口中引入数据
我正在构建我的第一个融合表,并将两个融合表放入谷歌地图中——一个是多边形,一个是点。我不想在单击多边形或点时显示常规信息窗口,而是想从Fusion表中提取一些数据,但它无法工作:Google maps api 3 从谷歌地图上Fusion Tables图层的信息窗口中引入数据,google-maps-api-3,google-fusion-tables,infowindow,Google Maps Api 3,Google Fusion Tables,Infowindow,我正在构建我的第一个融合表,并将两个融合表放入谷歌地图中——一个是多边形,一个是点。我不想在单击多边形或点时显示常规信息窗口,而是想从Fusion表中提取一些数据,但它无法工作: <script> function initialize() { var england = new google.maps.LatLng(53.2, -2); map = new google.maps.Map(document.getElementById('map_canvas')
<script>
function initialize() {
var england = new google.maps.LatLng(53.2, -2);
map = new google.maps.Map(document.getElementById('map_canvas'), {
center: england,
zoom: 8,
mapTypeId: google.maps.MapTypeId.ROADMAP
});
layer1 = new google.maps.FusionTablesLayer({
query: {select: 'geometry', from: '1HgGUc72F2Wlp6dvy4GWvLyWrl1kC6aJhnM7jPyc'},
styles: [
{ where: "Score = 0", polygonOptions: { fillColor: "#cdcdcd", fillOpacity: 0.3 } },
{ where: "Score = 1", polygonOptions: { fillColor: "#FF0000", fillOpacity: 0.5 } },
{ where: "Score = 2", polygonOptions: { fillColor: "#FF7E00", fillOpacity: 0.5 } },
{ where: "Score = 3", polygonOptions: { fillColor: "#008000", fillOpacity: 0.5 } }],
options: {suppressInfoWindows: true},
map: map,
});
google.maps.event.addListener(layer1, 'click', function(e) {e.infoWindowHtml = "Score" + e.row['Score'].value;}
});
layer2 = new google.maps.FusionTablesLayer({
query: {select: 'postcode', from: '1bawAKwQAUGE4mzYSyw4lTbOcgp7MgIGOLROel8Y'},
options: {suppressInfoWindows: true},
map: map,
});
google.maps.event.addListener(layer2, 'click', function(e) {e.infoWindowHtml = "Postcode" + e.row['Postcode'].value;}
});
google.maps.event.addDomListener(window, 'load', initialize);
}
</script>
</head>
<body onLoad="initialize()">
<div id="map_canvas"></div>
</body>
</html>
,infowindows被抑制,直到我添加了AddListener和AddDomainListener。有人能帮我回到正轨吗
您的新代码中有语法错误,额外两个}
在初始化函数中调用addDomListener并不重要,因为在感谢geocodezip中仍然有它。我应该在我最初的帖子中强调“一些”这个词。我想做的只是从Fusion表中引入一些字段-显然,两个层/表的不同字段。这就是为什么我在每一层都有单独的addListener/addDomListener,即使这是错误的!。我不明白你的评论。我不是一个读心术的人,我不知道你想要和不想要哪部分数据。您当然可以更改提供的代码以执行任何您想要的操作,这只是一个示例/概念证明。感谢您提供的示例/概念证明。假设我想从每个层导入一个不同的变量,并将其添加到信息窗口。我已经为每个层复制了openIW,并尝试执行以下操作:函数openIW1FTevent{//infoWindow.setContentFTevent.infoWindowHtml;//infoWindow.setPositionFTevent.latLng;infoWindow.setOptions{content:'Score:'+e.row['Score'].value,position:FTevent.latLng,pixelOffset:FTevent.pixelOffset};infoWindow.openmap;}但是我现在单击地图时没有得到任何信息。请查看javascript控制台。我得到的e是没有定义的。解决这个问题。你的尝试不会有多大成功。当您单击一个点时,单击不会将单击事件传递到基础多边形图层,并且如果没有办法更改,请确认。只要两个表之间没有任何关系,这就永远不会起作用,因为如果没有这种关系,就没有机会按给定的坐标请求两个表。
<script>
function initialize() {
var england = new google.maps.LatLng(53.2, -2);
map = new google.maps.Map(document.getElementById('map_canvas'), {
center: england,
zoom: 8,
mapTypeId: google.maps.MapTypeId.ROADMAP
});
layer1 = new google.maps.FusionTablesLayer({
query: {select: 'geometry', from: '1HgGUc72F2Wlp6dvy4GWvLyWrl1kC6aJhnM7jPyc'},
styles: [
{ where: "Score = 0", polygonOptions: { fillColor: "#cdcdcd", fillOpacity: 0.3 } },
{ where: "Score = 1", polygonOptions: { fillColor: "#FF0000", fillOpacity: 0.5 } },
{ where: "Score = 2", polygonOptions: { fillColor: "#FF7E00", fillOpacity: 0.5 } },
{ where: "Score = 3", polygonOptions: { fillColor: "#008000", fillOpacity: 0.5 } }],
options: {suppressInfoWindows: true},
map: map,
});
google.maps.event.addListener(layer1, 'click', function(e) {e.infoWindowHtml = "Score" + e.row['Score'].value;});
layer2 = new google.maps.FusionTablesLayer({
query: {select: 'postcode', from: '1bawAKwQAUGE4mzYSyw4lTbOcgp7MgIGOLROel8Y'},
options: {suppressInfoWindows: true},
map: map,
});
google.maps.event.addListener(layer2, 'click', function(e) {e.infoWindowHtml = "Postcode" + e.row['Postcode'].value;});
}
google.maps.event.addDomListener(window, 'load', initialize);
</script>
</head>
<body>
<div id="map_canvas"></div>
</body>
</html>
function openIW(FTevent) {
// infoWindow.setContent(FTevent.infoWindowHtml);
// infoWindow.setPosition(FTevent.latLng);
infoWindow.setOptions(
{
content: FTevent.infoWindowHtml,
position: FTevent.latLng,
pixelOffset: FTevent.pixelOffset
});
infoWindow.open(map);
}
google.maps.event.addListener(layer, 'click', function(e) {
console.log("E.Row! : "+ e.row['name'].value);
});