在谷歌地图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之间切换的正确方法吗?怎么做?