我有一些带有一些叠加层的Google地图,当缩放高于某个值(比如17)时,叠加层会完全覆盖地图。
我想阻止地图图块加载超出该缩放级别,因为它位于叠加层后面,导致不必要的数据传输。有可能吗?
编辑:
我需要类似的东西:
google.maps.event.addListener(map, 'zoom_changed', function() {
if(map.getZoom()>=zoomToHideMap)
stopLoadingTiles();
else
startLoadingTiles();
});
谢谢
答案 0 :(得分:1)
我的解决方案是在onzoomchanged事件上将Map Type更改为null。
google.maps.event.addListener(map, 'onzoomchanged', function() {
if(closeEnough)
map.setMapTypeId(null)
else
map.setMapTypeId(google.maps.MapTypeId.SATELLITE)
})
由于叠加层完全覆盖了地图,因此我将其用作基础图层而不是叠加层,以进行特定级别的放大。
答案 1 :(得分:0)
如果您使用OpenLayers,则可以更好地控制地图的行为。您仍然可以使用Google的地图图片:
答案 2 :(得分:0)
不是来自我而是有趣:
html, body { height: 100%;} #map_canvas { height: 1000px;} var options = { getTileUrl: function(coord, zoom) { // Don't load tiles for repeated maps var tileRange = 1 = tileRange || coord.x = tileRange ) return null; // Load the tile for the requested coordinate var file = 'images/zoom' + zoom + '/tile_' + zoom + '_' + (coord.x) + '_' + (coord.y) + '.jpg'; return file; }, tileSize: new google.maps.Size(256, 256), minZoom: 1, maxZoom: 9, radius: 1738000, // I got this from an example in the api, I have no idea what this does name: 'Map', }; var mapOptions = { center: new google.maps.LatLng(0,0), zoom: 2, backgroundColor: '#000', streetViewControl: false, mapTypeControl: false }; var map = new google.maps.Map(document.getElementById('map_canvas'),mapOptions); var mapType = new google.maps.ImageMapType(options); map.mapTypes.set('map', mapType); map.setMapTypeId('map'); var marker = new google.maps.Marker({ position: new google.maps.LatLng(0,0), map: map, title: "Test" });