diff --git a/src/Layers/BasemapLayer.js b/src/Layers/BasemapLayer.js index 0ba26d70b..40e86ba3e 100644 --- a/src/Layers/BasemapLayer.js +++ b/src/Layers/BasemapLayer.js @@ -1,6 +1,5 @@ import { TileLayer, Util } from 'leaflet'; import { pointerEvents } from '../Support'; -import { request } from '../Request'; import { setEsriAttribution, _getAttributionData, @@ -104,9 +103,7 @@ export var BasemapLayer = TileLayer.extend({ urlTemplate: tileProtocol + '//{s}.arcgisonline.com/ArcGIS/rest/services/World_Imagery/MapServer/tile/{z}/{y}/{x}', options: { minZoom: 1, - maxZoom: 22, - maxNativeZoom: 22, - downsampled: false, + maxZoom: 19, subdomains: ['server', 'services'], attribution: 'DigitalGlobe, GeoEye, i-cubed, USDA, USGS, AEX, Getmapping, Aerogrid, IGN, IGP, swisstopo, and the GIS User Community', attributionUrl: 'https://static.arcgis.com/attribution/World_Imagery' @@ -250,21 +247,12 @@ export var BasemapLayer = TileLayer.extend({ map.on('moveend', _updateMapAttribution); - // Esri World Imagery is cached all the way to zoom 22 in select regions - if (this._url === BasemapLayer.TILES.Imagery.urlTemplate) { - map.on('zoomanim', _fetchTilemap, this); - } - TileLayer.prototype.onAdd.call(this, map); }, onRemove: function (map) { map.off('moveend', _updateMapAttribution); - if (this._url === BasemapLayer.TILES.Imagery.urlTemplate) { - map.off('zoomanim', _fetchTilemap, this); - } - TileLayer.prototype.onRemove.call(this, map); }, @@ -284,50 +272,6 @@ export var BasemapLayer = TileLayer.extend({ } }); -function _fetchTilemap (evt) { - var map = evt.target; - if (!map) { return; } - - var oldZoom = map.getZoom(); - var newZoom = evt.zoom; - var newCenter = map.wrapLatLng(evt.center); - - if (newZoom > oldZoom && newZoom > 13 && !this.options.downsampled) { - // convert wrapped lat/long into tile coordinates and use them to generate the tilemap url - var tilePoint = map.project(newCenter, newZoom).divideBy(256).floor(); - - // use new coords to determine the tilemap url - var tileUrl = Util.template(this._url, Util.extend({ - s: this._getSubdomain(tilePoint), - x: tilePoint.x, - y: tilePoint.y, - z: newZoom - }, this.options)); - - // 8x8 grids are cached - var tilemapUrl = tileUrl.replace(/tile/, 'tilemap') + '/8/8'; - - // an array of booleans in the response indicate missing tiles - request(tilemapUrl, {}, function (err, response) { - if (!err) { - for (var i = 0; i < response.data.length; i++) { - if (!response.data[i]) { - // if necessary, resample a lower zoom - this.options.maxNativeZoom = newZoom - 1; - this.options.downsampled = true; - break; - } - // if no tiles are missing, reset the original maxZoom - this.options.maxNativeZoom = 22; - } - } - }, this); - } else if (newZoom < 13) { - // if the user moves to a new region, time for a fresh test - this.options.downsampled = false; - } -} - export function basemapLayer (key, options) { return new BasemapLayer(key, options); }