我有一個顯示德國鐵路的FusionTablesLayer的Google Maps(融合表可以找到here)。 geometry
列包含每個要素的LineString座標。FusionTablesLayer - 獲取位置欄點擊
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文件(here),並且geometry
列不再在事件處理程序中返回。
我檢查了所有設置,發現在這兩個表中,geometry
列的類型爲Location
。但是:在第一個表中,這些行不是地理編碼的。 File > Geocode > Begin geocoding
有效地啓動了對每行進行地理編碼的過程,而在第二個表中則顯示:「列已完全地理編碼」。
因爲一切都完全一樣,所以這可能是問題所在。我不知道如何對第二個表格中的行進行「非地理編碼」。自從第一次上傳一個月前,我猜測Google現在會自動對行進行地理編碼。
有什麼辦法讓點擊的功能的geometry
列?
注意:即使在geometry
列進行了地理編碼,這絕對是可能的。在第二個表格的「幾何圖形」選項卡中,可以選擇在單擊某個功能時顯示在infoWindow中的列。查看here進行工作演示。
這也是我的第一個想法,但如你所知,這是不是一個可靠的解決方它註定要在某個時間點中斷(如果Google更新了FusionTablesLayer InfoWindow)。這就是爲什麼我選擇添加一個額外的列,其中保留與'幾何'列完全相同的細節,除了它是'文本'類型。我知道這增加了總規模,但它似乎是一個更穩固的解決方案。 –
我不會稱之爲添加更多實體的列副本。一個更可靠的解決方案是給列賦一個唯一的id並通過AJAX請求幾何。 –