2008-10-17 171 views
3

我在使用GGeoXml對象的嵌入式Google地圖上覆蓋KML文件。我希望能夠從Javascript訪問KML文件中的特定地標(例如,爲了響應用戶操作在地圖上突出顯示選定的多邊形)。通過JavaScript訪問Google地圖覆蓋中的KML地標?

理想我喜歡做的是這樣的(僞代碼):

geoXml.getPlacemarkByName('Foo').focus(); 

Unforunately的Google Maps API似乎並沒有暴露標或KML覆蓋的任何其他內部。有沒有人有任何想法,我可能會做到這一點?我不知道覆蓋層是如何在內部實現的,但似乎有可能讓我這樣做。

我也使用jQuery FWIW。

回答

3

你看過GeoXML

+0

看起來很有前途 - 感謝您的提示。我會檢查出來的。 – 2008-10-21 21:01:24

2

由於Google沒有在API中提供答案,因此似乎沒有解決此問題的簡單方法。我發現訪問各個地標的唯一方法是在將它們添加到地圖時「捕獲」它們。爲了做到這一點,你必須在地圖對象上設置一個'addoverlay'監聽器。這樣的事情:

GEvent.addListener(map, 'addoverlay', function(o) { 
    kmlmarkers.push(o); 
} 

但是,我想不出一種方法來獲得標記對象的地標的id。因此,我能夠訪問特定地標的唯一方法是循環訪問數組,並根據座標將標記與我的數據進行匹配。這不是一個真正優雅的解決方案,但它是我能夠實現它的唯一方法。

0

你可以明白這一點通過簡單地尋找到目標如下:

GEvent.addListener(map, 'addoverlay', function(obj) 
{ if (!obj) { 
     alert("Cannot describe a null object"); 
     return; 
    } 
    var str = ""; 

     for (var prop in obj) { 
      str += prop + " = " + obj[prop] + ",\n"; 
     } 
     alert(str); 
    }); 

這將有助於...

0

看KML更新。你將需要一個placeark ID。