Merge pull request #1510 from tschaub/bing-providers

Handle case where Bing resource has no imagery providers.
This commit is contained in:
Tim Schaub
2014-01-10 21:00:53 -08:00

View File

@@ -115,37 +115,40 @@ ol.source.BingMaps.prototype.handleImageryMetadataResponse =
}); });
}))); })));
var transform = ol.proj.getTransformFromProjections( if (resource.imageryProviders) {
ol.proj.get('EPSG:4326'), this.getProjection()); var transform = ol.proj.getTransformFromProjections(
var attributions = goog.array.map( ol.proj.get('EPSG:4326'), this.getProjection());
resource.imageryProviders,
function(imageryProvider) { var attributions = goog.array.map(
var html = imageryProvider.attribution; resource.imageryProviders,
/** @type {Object.<string, Array.<ol.TileRange>>} */ function(imageryProvider) {
var tileRanges = {}; var html = imageryProvider.attribution;
goog.array.forEach( /** @type {Object.<string, Array.<ol.TileRange>>} */
imageryProvider.coverageAreas, var tileRanges = {};
function(coverageArea) { goog.array.forEach(
var minZ = coverageArea.zoomMin; imageryProvider.coverageAreas,
var maxZ = coverageArea.zoomMax; function(coverageArea) {
var bbox = coverageArea.bbox; var minZ = coverageArea.zoomMin;
var epsg4326Extent = [bbox[1], bbox[0], bbox[3], bbox[2]]; var maxZ = coverageArea.zoomMax;
var extent = ol.extent.transform(epsg4326Extent, transform); var bbox = coverageArea.bbox;
var tileRange, z, zKey; var epsg4326Extent = [bbox[1], bbox[0], bbox[3], bbox[2]];
for (z = minZ; z <= maxZ; ++z) { var extent = ol.extent.transform(epsg4326Extent, transform);
zKey = z.toString(); var tileRange, z, zKey;
tileRange = tileGrid.getTileRangeForExtentAndZ(extent, z); for (z = minZ; z <= maxZ; ++z) {
if (zKey in tileRanges) { zKey = z.toString();
tileRanges[zKey].push(tileRange); tileRange = tileGrid.getTileRangeForExtentAndZ(extent, z);
} else { if (zKey in tileRanges) {
tileRanges[zKey] = [tileRange]; tileRanges[zKey].push(tileRange);
} else {
tileRanges[zKey] = [tileRange];
}
} }
} });
}); return new ol.Attribution({html: html, tileRanges: tileRanges});
return new ol.Attribution({html: html, tileRanges: tileRanges}); });
}); attributions.push(ol.source.BingMaps.TOS_ATTRIBUTION);
attributions.push(ol.source.BingMaps.TOS_ATTRIBUTION); this.setAttributions(attributions);
this.setAttributions(attributions); }
this.setLogo(brandLogoUri); this.setLogo(brandLogoUri);