There seems to be a timing bug though.
This commit is contained in:
parent
19c51bcfb8
commit
6f1532f402
@ -20,18 +20,24 @@
|
||||
return 'http://{s}.tile.cloudmade.com/BC9A493B41014CAABB98F0471D759707/' + styleId + '/256/{z}/{x}/{y}.png';
|
||||
}
|
||||
|
||||
var map = L.map('map').setView(L.latLng(50.5, 30.51), 15);
|
||||
var map = L.map('map').setView(L.latLng(50.5, 30.51), 0);
|
||||
|
||||
var cloudmadeAttribution = 'Map data © 2011 OpenStreetMap contributors, Imagery © 2011 CloudMade',
|
||||
cloudmade = L.tileLayer(getCloudMadeUrl(997), {attribution: cloudmadeAttribution, minZoom: 0, maxZoom: 10}).addTo(map),
|
||||
cloudmade2 = L.tileLayer(getCloudMadeUrl(998), {attribution: 'Hello world', minZoom: 5, maxZoom: 18});
|
||||
|
||||
L.control.layers({
|
||||
'CloudMade Fresh': cloudmade,
|
||||
'CloudMade Pale Dawn': cloudmade2
|
||||
'CloudMade Pale Dawn (5-18)': cloudmade2,
|
||||
'CloudMade Fresh (0-10)': cloudmade
|
||||
}).addTo(map);
|
||||
|
||||
L.control.scale().addTo(map);
|
||||
|
||||
for (var i = 0; i < 1000; i++) {
|
||||
L.marker(getRandomLatLng(map)).addTo(map);
|
||||
}
|
||||
|
||||
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
|
@ -148,11 +148,12 @@ L.Map = L.Class.extend({
|
||||
this._layers[id] = layer;
|
||||
|
||||
// TODO getMaxZoom, getMinZoom in ILayer (instead of options)
|
||||
if (layer.options && !isNaN(layer.options.maxZoom)) {
|
||||
this._layersMaxZoom = Math.max(this._layersMaxZoom || 0, layer.options.maxZoom);
|
||||
}
|
||||
if (layer.options && !isNaN(layer.options.minZoom)) {
|
||||
this._layersMinZoom = Math.min(this._layersMinZoom || Infinity, layer.options.minZoom);
|
||||
if(layer.options && (!isNaN(layer.options.maxZoom) || !isNaN(layer.options.minZoom))){
|
||||
this._zoomBoundLayers[id] = layer;
|
||||
this._updateZoomLevels();
|
||||
if(this._loaded){
|
||||
this.setZoom(this.getZoom());
|
||||
}
|
||||
}
|
||||
|
||||
// TODO looks ugly, refactor!!!
|
||||
@ -178,6 +179,10 @@ L.Map = L.Class.extend({
|
||||
layer.onRemove(this);
|
||||
|
||||
delete this._layers[id];
|
||||
if(this._zoomBoundLayers[id]){
|
||||
delete this._zoomBoundLayers[id];
|
||||
this._updateZoomLevels();
|
||||
}
|
||||
|
||||
// TODO looks ugly, refactor
|
||||
if (this.options.zoomAnimation && L.TileLayer && (layer instanceof L.TileLayer)) {
|
||||
@ -477,6 +482,7 @@ L.Map = L.Class.extend({
|
||||
layers = layers ? (layers instanceof Array ? layers : [layers]) : [];
|
||||
|
||||
this._layers = {};
|
||||
this._zoomBoundLayers = {};
|
||||
this._tileLayersNum = 0;
|
||||
|
||||
var i, len;
|
||||
@ -535,6 +541,16 @@ L.Map = L.Class.extend({
|
||||
L.DomUtil.setPosition(this._mapPane, this._getMapPanePos().subtract(offset));
|
||||
},
|
||||
|
||||
_updateZoomLevels: function () {
|
||||
var i;
|
||||
this._layersMinZoom = 0;
|
||||
this._layersMaxZoom = Infinity;
|
||||
for (i in this._zoomBoundLayers) {
|
||||
var l = this._zoomBoundLayers[i];
|
||||
this._layersMinZoom = Math.max(this._layersMinZoom, l.options.minZoom || 0);
|
||||
this._layersMaxZoom = Math.min(this._layersMaxZoom, l.options.maxZoom || Infinity);
|
||||
}
|
||||
},
|
||||
|
||||
// map events
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user