Google 地图 -- 弹出框
Google maps -- pop up box
我已经使用 Zonums Solutions 的 Shp2kml2 软件将多个 shapefile 转换为 KML。我用 KML 图层制作了一张地图(我已将其导入 google 文档以获取 url)。例如:
var ctaLayer = new google.maps.KmlLayer({
url: 'https://docs.google.com/uc?authuser=0&id=0B15UI5xGYTOadDlta2FoZ2pCc1E&export=download'
});
ctaLayer.setMap(map);
当我单击 google 地图中的多边形图层时,弹出框打开。我怎样才能做到当我点击第二个多边形图层时,之前selected的弹出框会自动清除并且不再显示? (因为在我的情况下,之前的弹出框仍然会出现,但我不希望这种情况发生,因为如果用户 select 有多个多边形图层,屏幕上会出现太多弹出框.我知道用户可以 select X 来删除弹出窗口 window 但我希望它尽可能对用户友好)。
除了多边形层,我在地图中还有其他点层。但是当我试图点击一个特定的点时,弹出的信息是与点位于同一位置的多边形的信息。
您可以考虑以下方法:
1) 抑制 默认 信息 window:
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)注册一个 shared 实例 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);
我已经使用 Zonums Solutions 的 Shp2kml2 软件将多个 shapefile 转换为 KML。我用 KML 图层制作了一张地图(我已将其导入 google 文档以获取 url)。例如:
var ctaLayer = new google.maps.KmlLayer({
url: 'https://docs.google.com/uc?authuser=0&id=0B15UI5xGYTOadDlta2FoZ2pCc1E&export=download'
});
ctaLayer.setMap(map);
当我单击 google 地图中的多边形图层时,弹出框打开。我怎样才能做到当我点击第二个多边形图层时,之前selected的弹出框会自动清除并且不再显示? (因为在我的情况下,之前的弹出框仍然会出现,但我不希望这种情况发生,因为如果用户 select 有多个多边形图层,屏幕上会出现太多弹出框.我知道用户可以 select X 来删除弹出窗口 window 但我希望它尽可能对用户友好)。
除了多边形层,我在地图中还有其他点层。但是当我试图点击一个特定的点时,弹出的信息是与点位于同一位置的多边形的信息。
您可以考虑以下方法:
1) 抑制 默认 信息 window:
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)注册一个 shared 实例 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);