2015-05-27 134 views
0

我已經使用Zonums Solutions的Shp2kml2軟件將多個shapefile轉換爲KML。我製作了KML圖層(我已經將其導入Google文檔以獲取網址)。舉個例子:谷歌地圖 - 彈出框

var ctaLayer = new google.maps.KmlLayer({ 
    url: 'https://docs.google.com/uc?authuser=0&id=0B15UI5xGYTOadDlta2FoZ2pCc1E&export=download' 
    }); 
    ctaLayer.setMap(map); 

當我點擊谷歌地圖中的多邊形圖層時,彈出框打開。我怎樣才能做到這一點,以便當我點擊第二個多邊形圖層時,之前選擇的彈出框被自動清除並不再顯示? (因爲在我的情況下,較早的彈出框仍然顯示,但我不希望發生這種情況,因爲如果用戶選擇多個多邊形圖層,屏幕上會顯示太多彈出框。我明白,用戶可以選擇X來刪除彈出式窗口,但我希望儘可能方便用戶使用)。

除了多邊形圖層之外,我在地圖上還有其他的點圖層。但是當我嘗試點擊一個特定的點時,彈出信息是與點位於同一位置的多邊形的信息。

我的地圖中找到:http://userpages.flemingc.on.ca/~catam/collab.html

+0

請提供[最小的,完整的,經過測試和讀示例](http://stackoverflow.com/help/mcve),演示了這個問題。您可能想要禁止本地infowindow,並在您想要擁有infowindows的所有圖層上創建由您單擊偵聽器打開的您自己的infowindow。 – geocodezip

+0

@geocodezip,迄今爲止創建的在線地圖是:userpages.flemingc.on.ca/~catam/collab.html – Toronto23

回答

0

你可以考慮以下方法:

1)抑制默認信息窗口:

var kmlOptions = { 
      suppressInfoWindows: true, // do not to display an info window when clicked 
      preserveViewport: false, 
      map: map 
     }; 
    var layer = new google.maps.KmlLayer(url, kmlOptions); 

2)註冊共享實例Info Window

var infoWindow = new google.maps.InfoWindow(); 
var openInfoWindow = function (KMLevent) { 
    infoWindow.close(); 
    infoWindow.setOptions(
    { 
     content: KMLevent.featureData.infoWindowHtml, 
     position: KMLevent.latLng, 
     pixelOffset: KMLevent.pixelOffset 
    }); 
    infoWindow.open(map); 
}; 
google.maps.event.addListener(layer, "click", openInfoWindow); 

Example

+1

@Vladim Gremyachev,謝謝你的工作! – Toronto23