2014-06-26 97 views
1

我正在嘗試使用Leaflet製作離線貼圖。在小冊子中顯示來自其他縮放級別的瓷磚

爲了保存數據,用戶可以選擇不保存所有縮放級別。舉例用戶具有zoomlevels: - 15和17

現在的問題是,當用戶從15級縮放到16

如何顯示級別15(或17)從16縮放層?

另一種方法是跳過縮放級別16,但也許有另一種選擇? 我從傳單中查看源代碼,但我無法弄清楚。

JSFIDDLE

Update Fiddle與插件,跳過縮放級別(由ILJA茲韋列夫)

HTML

<div id="map"></div> 
<div id="out"></div> 

javascipt的

var map = L.map('map').setView([52.084, 5.11], 15); 
isNoZoomlevel = 16; 

L.tileLayer('http://a.tile.openstreetmap.org/{z}/{x}/{y}.png', { 
    attribution: '&copy; <a href="http://openstreetmap.org">OpenStreetMap</a>', 
    maxZoom: 18 
}).addTo(map); 


map.on('zoomend', function() { 
    console.log("I zoomed to level " + map.getZoom());  
    if(map.getZoom() == isNoZoomlevel) { 
     console.log("This offline zoomlevel does not excist"); 
     $("#out").html("This is no zoomlevel"); 
     // Howto replace the zoomlevel 16 with 17 or 15?? 
    } else { 
     $("#out").html(""); 
    } 
}); 

CSS

#map { 
    height: 250px; 
} 

回答

3

專門爲你,我只是做LimitZoom plugin:剛剛在L.Mapzooms: [15, 17, ...]選項指定的縮放級別。

+0

試過了......像魅力一樣工作 – YaFred

+0

是的。感謝您的好插件。 唯一的問題是,它不會顯示縮放級別16級別15的圖塊。它只是跳過縮放級別16.因此,當您只有3個縮放級別時,它會放大到極限......我將學習如何編寫插件。也許我可以爲你的github做出貢獻.. –

+0

我想讓它變成這樣: http://jsfiddle.net/zoutepopcorn/7a3xe/17/ –

1

根據你的榜樣,這對我的作品

var prevZoom = 15; 
map.on('zoomend', function() { 

    if(map.getZoom() == isNoZoomlevel) { 

     if(map.getZoom() > prevZoom) { 
      map.setZoom(map.getZoom() + 1); // force zoomIn 
     } 
     if(map.getZoom() < prevZoom) { 
      map.setZoom(map.getZoom() - 1); // force zoomOut 
     } 
    } 
    prevZoom = map.getZoom(); 
}); 
相關問題