我正在尝试创建地图(使用Google Maps JavaScript API V3),其中包含几个部分透明的图层。默认情况下,这些图层应全部叠加在一起以形成完整的地图,但用户应该能够打开或关闭它们的任意组合(同时保留顺序)以创建他们喜欢的任何视图。
到目前为止,我已经很幸运地使用map.mapTypes
为单层工作了,但是当通过map.overlayMapTypes
添加所有图层时,我遇到了几个障碍:
map.setMapTypeId()
(未显示任何控件且地图未正确居中)且无法使用叠加层调用,则地图似乎未完全初始化。map.overlayMapTypes
数组的情况下切换叠加层的可见性,这会使它们保持正确排序变得复杂。我更喜欢类似于交通/运输/照片/等的东西。控制在Google Maps内可用。这是我正在使用的initialize
函数。我发布了一个链接,但地图图像不公开:
function initialize() {
map = new google.maps.Map(document.getElementById("map_canvas"), {
zoom: 0,
center: center
});
/* if these lines are uncommented, the single layer displays perfectly */
//map.mapTypes.set("Layer 3", layers[3]);
//map.setMapTypeId("Layer 3");
//return;
var dummy = new google.maps.ImageMapType({
name: "Dummy",
minZoom: 0,
maxZoom: 6,
tileSize: new google.maps.Size(256, 256),
getTileUrl: function() {return null; }
});
map.mapTypes.set("Dummy", dummy);
map.setMapTypeId("Dummy");
// layers is an array of ImageMapTypes
for (var i = 0; i < layers.length; i++) {
map.overlayMapTypes.push(layers[i]);
}
}
正如您所看到的,我尝试创建一个“虚拟”地图类型(它始终为平铺网址返回null
)以充当基本地图。当 导致控件显示时,它仍然无法正确居中。
创建仅包含可切换叠加层的地图的最佳方法是什么?
更新:如果您还记得设置投影,那么虚拟地图类型的效果非常好。这至少解决了一个问题。 : - )
答案 0 :(得分:1)
我使用ImageMapType,但我没有将它添加到mapTypes。我只是将它添加到overlayMapTypes,当我需要删除它时,我使用setAt将overlayMapTypes中的条目设置为null。
您需要向UI添加单独的控件以切换各个图层。