1

いくつかのオーバーレイを含む Google マップがあり、ズームが値 (たとえば 17) よりも高い場合、オーバーレイはマップを完全にカバーします。

オーバーレイの背後にあり、不要なデータ転送が発生するため、マップ タイルがそのズーム レベルを超えて読み込まれないようにしたいと考えています。出来ますか?

編集:

次のようなものが必要です:

google.maps.event.addListener(map, 'zoom_changed', function() { 
    if(map.getZoom()>=zoomToHideMap)
        stopLoadingTiles();
    else
        startLoadingTiles();
}); 

ありがとうございました

4

3 に答える 3

1

私の解決策は、onzoomchanged イベントで Map Type を null に変更することでした。

google.maps.event.addListener(map, 'onzoomchanged', function() {
    if(closeEnough)
        map.setMapTypeId(null)
    else
        map.setMapTypeId(google.maps.MapTypeId.SATELLITE)
})

オーバーレイがマップを完全に覆っていたので、特定のレベルのズーム オンのオーバーレイではなく、ベース レイヤーとして使用しました。

于 2012-11-30T02:57:08.703 に答える
0

OpenLayersを使用すると、マップの動作をより細かく制御できます。Google の地図画像を引き続き使用できます。

于 2012-11-08T00:15:49.283 に答える
0

私からではありませんが、興味深いです:

    
        
        
            html、本文 { 高さ: 100%;}
            #map_canvas { 高さ: 1000px;}
        
    
    
        
        
        
            var オプション =
            {
                getTileUrl: 関数 (座標、ズーム)
                {
                    // 繰り返しマップのタイルを読み込まない
                    var tileRange = 1 = tileRange || coord.x = tileRange )
                        null を返します。

                    // 要求された座標のタイルをロードします
                    var file = 'images/zoom' + zoom + '/tile_' + zoom + '_' + (coord.x) + '_' + (coord.y) + '.jpg';

                    ファイルを返します。
                }、
                tileSize: 新しい google.maps.Size(256, 256),
                最小ズーム: 1,
                最大ズーム: 9,
                radius: 1738000, // API の例から取得しました。これが何をするのかわかりません
                名前: 'マップ',
            };
            var mapOptions =
            {
                中央: 新しい google.maps.LatLng(0,0),
                ズーム: 2,
                backgroundColor: '#000',
                streetViewControl: false,
                mapTypeControl: false
            };

            var map = new google.maps.Map(document.getElementById('map_canvas'),mapOptions);
            var mapType = 新しい google.maps.ImageMapType(オプション);
            map.mapTypes.set('map', mapType);
            map.setMapTypeId('マップ');

            var マーカー = 新しい google.maps.Marker({
                    位置: 新しい google.maps.LatLng(0,0),
                    マップ: マップ、
                    タイトル:「テスト」
            });
            
    

于 2012-11-08T00:18:02.133 に答える