仅使用可切换叠加层创建地图?

时间:2011-06-16 18:24:39

标签: javascript google-maps google-maps-api-3

我正在尝试创建地图(使用Google Maps JavaScript API V3),其中包含几个部分透明的图层。默认情况下,这些图层应全部叠加在一起以形成完整的地图,但用户应该能够打开或关闭它们的任意组合(同时保留顺序)以创建他们喜欢的任何视图。

到目前为止,我已经很幸运地使用map.mapTypes为单层工作了,但是当通过map.overlayMapTypes添加所有图层时,我遇到了几个障碍:

  1. 如果未调用map.setMapTypeId()(未显示任何控件且地图未正确居中)且无法使用叠加层调用,则地图似乎未完全初始化。
  2. 目前尚不清楚如何在不直接修改map.overlayMapTypes数组的情况下切换叠加层的可见性,这会使它们保持正确排序变得复杂。我更喜欢类似于交通/运输/照片/等的东西。控制在Google Maps内可用。
  3. 这是我正在使用的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)以充当基本地图。当 导致控件显示时,它仍然无法正确居中。

    创建仅包含可切换叠加层的地图的最佳方法是什么?

    更新:如果您还记得设置投影,那么虚拟地图类型的效果非常好。这至少解决了一个问题。 : - )

1 个答案:

答案 0 :(得分:1)

我使用ImageMapType,但我没有将它添加到mapTypes。我只是将它添加到overlayMapTypes,当我需要删除它时,我使用setAt将overlayMapTypes中的条目设置为null。

您需要向UI添加单独的控件以切换各个图层。