如何在ImageMapType和StyledMapType

时间:2015-08-20 18:30:12

标签: javascript google-maps

在谷歌地图v3中,我想在不同的缩放级别切换ImageMapType和StyledMapType。但我得到错误:未捕获RangeError:超出最大调用堆栈大小

这是测试代码:

    var curLabLocation = new google.maps.LatLng(36.415793, -121.084421);

    var mapOptions = {
      zoom: 21,
      streetViewControl: false,
      center: curLabLocation,
      mapTypeId: google.maps.MapTypeId.MAP
    };
    var $map = $('#map-canvas');
    myMap = new google.maps.Map($map[0], mapOptions);

    var zoom2_MapType = new google.maps.ImageMapType({

      getTileUrl: function(coord, zoom) {
        // No image
        return null;
      },
      tileSize: new google.maps.Size(256, 256),

      maxZoom: 24,
      minZoom: 22,
      name: 'zoom2'
    });

    var mapStyleNormalZoom = [{featureType: "landscape", 
                              elementType: "all", 
                              stylers: [{ visibility: "off" }]
                             }];

    var zoom1_StyledMapOptions = {map: myMap, name: 'zoom1'}; 
    var zoom1_MapType = new google.maps.StyledMapType(mapStyleNormalZoom,
                                                      zoom1_StyledMapOptions); 


    myMap.mapTypes.set('zoom2', zoom2_MapType);
    myMap.mapTypes.set('zoom1', zoom1_MapType);  

    // The following 2 lines tries to simulate switching between 2 map types. But it does not work in 2nd case.
    // NO problem to switch from "zoom1" to "zoom2".
    //myMap.setMapTypeId('zoom1');
    //myMap.setMapTypeId('zoom2');

    // Switch from "zoom2" to "zoom1" cause exception error.
    // ERROR: Uncaught RangeError: Maximum call stack size exceeded
    myMap.setMapTypeId('zoom2');
    myMap.setMapTypeId('zoom1'); //This line causes "Uncaught RangeError: Maximum call stack size exceeded"

我不确定这是否是正确的切换方式。

问题:这是在ImageMapType和StyledMapType之间切换的正确方法吗?怎么做?

0 个答案:

没有答案