2015-05-27 132 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