【发布时间】:2013-09-28 14:34:04
【问题描述】:
我有一个带有 FusionTablesLayer 的 Google 地图,其中显示了德国的铁路(可以在 here 找到融合表)。 geometry 列包含每个要素的 LineString 坐标。
var railwaysLayer = new google.maps.FusionTablesLayer({
map: map,
query: {
select: 'geometry',
from: '1cVaJLbbxgBErP8PzYkHP-lpWMN8wUmINbdAJS1Y'
}
});
当用户点击铁路时,我需要知道点击了哪一行(或实际功能)。这可以在click 事件处理程序中完成,如下所示:
google.maps.event.addListener(existingRailwaysLayer, 'click', function(e) {
console.log(e.row.geometry.value);
});
这按预期工作,但问题是:此表是一个月前从 KML 文件上传的,作为测试。我今天在另一个帐户 (here) 上导入了完全相同的 KML 文件,并且事件处理程序中不再返回 geometry 列。
我检查了所有设置,发现在两个表中,geometry 列的类型为 Location。但是:在第一个表中,行未进行地理编码。 File > Geocode > Begin geocoding 有效地启动了对每一行进行地理编码的过程,而在第二个表中它说:“列已完全地理编码”。
由于其他一切都完全相同,这很可能是问题所在。我不知道如何对第二个表中的行进行“取消地理编码”。自从一个月前第一个上传以来,我的猜测是 Google 现在会自动对行进行地理编码。
有什么方法可以获取被点击的功能的geometry 列?
注意:这绝对是可能的,即使 geometrycolumn 已进行地理编码。在第二个表的“几何图”选项卡中,您可以选择单击要素时信息窗口中显示的列。有关工作演示,请参阅 here。
【问题讨论】:
标签: google-maps google-maps-api-3 google-fusion-tables