我有一个带有 FusionTablesLayer 的谷歌地图,显示德国的铁路(融合表可以在这里找到)。该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 文件上传的,作为测试。我今天在不同的帐户上导入了完全相同的 KML 文件(此处),并且该geometry
列不再在事件处理程序中返回。
我检查了所有设置,发现在两个表中,geometry
列的类型都是Location
. 但是:在第一个表中,行未进行地理编码。File > Geocode > Begin geocoding
有效地开始对每一行进行地理编码的过程,而在第二个表中它说:“列已完全地理编码”。
由于其他一切都完全相同,这很可能是问题所在。我不知道如何对第二个表中的行进行“取消地理编码”。自从一个月前第一个上传以来,我的猜测是谷歌现在自动对行进行地理编码。
有什么方法可以获取geometry
被点击的功能列?
注意:这绝对是可能的,即使geometry
列是地理编码的。在第二个表的“几何图”选项卡中,您可以选择单击要素时信息窗口中显示的列。有关工作演示,请参见此处。