Merge remote-tracking branch 'openlayers/master' into vector-api
This commit is contained in:
@@ -12,6 +12,7 @@ var map = new ol.Map({
|
|||||||
})
|
})
|
||||||
],
|
],
|
||||||
renderers: ol.RendererHints.createFromQueryData(),
|
renderers: ol.RendererHints.createFromQueryData(),
|
||||||
|
ol3Logo: false,
|
||||||
target: 'map',
|
target: 'map',
|
||||||
view: new ol.View2D({
|
view: new ol.View2D({
|
||||||
center: [0, 0],
|
center: [0, 0],
|
||||||
|
|||||||
BIN
resources/logo-32x32-optimized.png
Normal file
BIN
resources/logo-32x32-optimized.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 1.1 KiB |
BIN
resources/logo-32x32.png
Normal file
BIN
resources/logo-32x32.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 1.2 KiB |
@@ -31,6 +31,7 @@
|
|||||||
* @property {ol.Collection|Array.<ol.interaction.Interaction>|undefined} interactions
|
* @property {ol.Collection|Array.<ol.interaction.Interaction>|undefined} interactions
|
||||||
* Interactions that are initially added to the map.
|
* Interactions that are initially added to the map.
|
||||||
* @property {Array.<ol.layer.Base>|ol.Collection|undefined} layers Layers.
|
* @property {Array.<ol.layer.Base>|ol.Collection|undefined} layers Layers.
|
||||||
|
* @property {boolean|undefined} ol3Logo Show ol3 logo. Default is `true`.
|
||||||
* @property {ol.Collection|Array.<ol.Overlay>|undefined} overlays
|
* @property {ol.Collection|Array.<ol.Overlay>|undefined} overlays
|
||||||
* Overlays initially added to the map.
|
* Overlays initially added to the map.
|
||||||
* @property {ol.RendererHint|undefined} renderer Renderer.
|
* @property {ol.RendererHint|undefined} renderer Renderer.
|
||||||
|
|||||||
@@ -90,15 +90,25 @@ ol.control.Logo.prototype.updateElement_ = function(frameState) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
var image, logoElement;
|
var image, logoElement, logoKey;
|
||||||
for (logo in logos) {
|
for (logoKey in logos) {
|
||||||
if (!(logo in logoElements)) {
|
if (!(logoKey in logoElements)) {
|
||||||
image = new Image();
|
image = new Image();
|
||||||
image.src = logo;
|
image.src = logoKey;
|
||||||
logoElement = goog.dom.createElement(goog.dom.TagName.LI);
|
var logoValue = logos[logoKey];
|
||||||
logoElement.appendChild(image);
|
var child;
|
||||||
|
if (logoValue === '') {
|
||||||
|
child = image;
|
||||||
|
} else {
|
||||||
|
child = goog.dom.createDom(goog.dom.TagName.A, {
|
||||||
|
'href': logoValue,
|
||||||
|
'target': '_blank'
|
||||||
|
});
|
||||||
|
child.appendChild(image);
|
||||||
|
}
|
||||||
|
logoElement = goog.dom.createDom(goog.dom.TagName.LI, undefined, child);
|
||||||
goog.dom.appendChild(this.ulElement_, logoElement);
|
goog.dom.appendChild(this.ulElement_, logoElement);
|
||||||
logoElements[logo] = logoElement;
|
logoElements[logoKey] = logoElement;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -26,7 +26,7 @@ goog.require('ol.layer.LayerState');
|
|||||||
* index: number,
|
* index: number,
|
||||||
* layersArray: Array.<ol.layer.Layer>,
|
* layersArray: Array.<ol.layer.Layer>,
|
||||||
* layerStates: Object.<number, ol.layer.LayerState>,
|
* layerStates: Object.<number, ol.layer.LayerState>,
|
||||||
* logos: Object.<string, boolean>,
|
* logos: Object.<string, string>,
|
||||||
* pixelToCoordinateMatrix: goog.vec.Mat4.Number,
|
* pixelToCoordinateMatrix: goog.vec.Mat4.Number,
|
||||||
* postRenderFunctions: Array.<ol.PostRenderFunction>,
|
* postRenderFunctions: Array.<ol.PostRenderFunction>,
|
||||||
* size: ol.Size,
|
* size: ol.Size,
|
||||||
|
|||||||
@@ -65,6 +65,41 @@ goog.require('ol.structs.PriorityQueue');
|
|||||||
goog.require('ol.vec.Mat4');
|
goog.require('ol.vec.Mat4');
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @const
|
||||||
|
* @type {string}
|
||||||
|
*/
|
||||||
|
ol.OL3_URL = 'http://ol3js.org/';
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @const
|
||||||
|
* @type {string}
|
||||||
|
*/
|
||||||
|
ol.OL3_LOGO_URL = 'data:image/png;base64,' +
|
||||||
|
'iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAMAAABEpIrGAAAAA3NCSVQICAjb4U/gAAAACXBI' +
|
||||||
|
'WXMAAAHGAAABxgEXwfpGAAAAGXRFWHRTb2Z0d2FyZQB3d3cuaW5rc2NhcGUub3Jnm+48GgAA' +
|
||||||
|
'AhNQTFRF////AP//AICAgP//AFVVQECA////K1VVSbbbYL/fJ05idsTYJFtbbcjbJllmZszW' +
|
||||||
|
'WMTOIFhoHlNiZszTa9DdUcHNHlNlV8XRIVdiasrUHlZjIVZjaMnVH1RlIFRkH1RkH1ZlasvY' +
|
||||||
|
'asvXVsPQH1VkacnVa8vWIVZjIFRjVMPQa8rXIVVkXsXRsNveIFVkIFZlIVVj3eDeh6GmbMvX' +
|
||||||
|
'H1ZkIFRka8rWbMvXIFVkIFVjIFVkbMvWH1VjbMvWIFVlbcvWIFVla8vVIFVkbMvWbMvVH1Vk' +
|
||||||
|
'bMvWIFVlbcvWIFVkbcvVbMvWjNPbIFVkU8LPwMzNIFVkbczWIFVkbsvWbMvXIFVkRnB8bcvW' +
|
||||||
|
'2+TkW8XRIFVkIlZlJVloJlpoKlxrLl9tMmJwOWd0Omh1RXF8TneCT3iDUHiDU8LPVMLPVcLP' +
|
||||||
|
'VcPQVsPPVsPQV8PQWMTQWsTQW8TQXMXSXsXRX4SNX8bSYMfTYcfTYsfTY8jUZcfSZsnUaIqT' +
|
||||||
|
'acrVasrVa8jTa8rWbI2VbMvWbcvWdJObdcvUdszUd8vVeJaee87Yfc3WgJyjhqGnitDYjaar' +
|
||||||
|
'ldPZnrK2oNbborW5o9bbo9fbpLa6q9ndrL3ArtndscDDutzfu8fJwN7gwt7gxc/QyuHhy+Hi' +
|
||||||
|
'zeHi0NfX0+Pj19zb1+Tj2uXk29/e3uLg3+Lh3+bl4uXj4ufl4+fl5Ofl5ufl5ujm5+jmySDn' +
|
||||||
|
'BAAAAFp0Uk5TAAECAgMEBAYHCA0NDg4UGRogIiMmKSssLzU7PkJJT1JTVFliY2hrdHZ3foSF' +
|
||||||
|
'hYeJjY2QkpugqbG1tre5w8zQ09XY3uXn6+zx8vT09vf4+Pj5+fr6/P39/f3+gz7SsAAAAVVJ' +
|
||||||
|
'REFUOMtjYKA7EBDnwCPLrObS1BRiLoJLnte6CQy8FLHLCzs2QUG4FjZ5GbcmBDDjxJBXDWxC' +
|
||||||
|
'Brb8aM4zbkIDzpLYnAcE9VXlJSWlZRU13koIeW57mGx5XjoMZEUqwxWYQaQbSzLSkYGfKFSe' +
|
||||||
|
'0QMsX5WbjgY0YS4MBplemI4BdGBW+DQ11eZiymfqQuXZIjqwyadPNoSZ4L+0FVM6e+oGI6g8' +
|
||||||
|
'a9iKNT3o8kVzNkzRg5lgl7p4wyRUL9Yt2jAxVh6mQCogae6GmflI8p0r13VFWTHBQ0rWPW7a' +
|
||||||
|
'hgWVcPm+9cuLoyy4kCJDzCm6d8PSFoh0zvQNC5OjDJhQopPPJqph1doJBUD5tnkbZiUEqaCn' +
|
||||||
|
'B3bTqLTFG1bPn71kw4b+GFdpLElKIzRxxgYgWNYc5SCENVHKeUaltHdXx0dZ8uBI1hJ2UUDg' +
|
||||||
|
'q82CM2MwKeibqAvSO7MCABq0wXEPiqWEAAAAAElFTkSuQmCC';
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @enum {string}
|
* @enum {string}
|
||||||
* @todo stability experimental
|
* @todo stability experimental
|
||||||
@@ -143,6 +178,12 @@ ol.Map = function(options) {
|
|||||||
this.devicePixelRatio_ = goog.isDef(options.devicePixelRatio) ?
|
this.devicePixelRatio_ = goog.isDef(options.devicePixelRatio) ?
|
||||||
options.devicePixelRatio : ol.BrowserFeature.DEVICE_PIXEL_RATIO;
|
options.devicePixelRatio : ol.BrowserFeature.DEVICE_PIXEL_RATIO;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @private
|
||||||
|
* @type {boolean}
|
||||||
|
*/
|
||||||
|
this.ol3Logo_ = optionsInternal.ol3Logo;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @private
|
* @private
|
||||||
* @type {goog.async.AnimationDelay}
|
* @type {goog.async.AnimationDelay}
|
||||||
@@ -1087,6 +1128,9 @@ ol.Map.prototype.renderFrame_ = function(time) {
|
|||||||
viewHints: viewHints,
|
viewHints: viewHints,
|
||||||
wantedTiles: {}
|
wantedTiles: {}
|
||||||
};
|
};
|
||||||
|
if (this.ol3Logo_) {
|
||||||
|
frameState.logos[ol.OL3_LOGO_URL] = ol.OL3_URL;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
var preRenderFunctions = this.preRenderFunctions_;
|
var preRenderFunctions = this.preRenderFunctions_;
|
||||||
@@ -1242,6 +1286,7 @@ ol.Map.prototype.withFrozenRendering = function(f, opt_obj) {
|
|||||||
/**
|
/**
|
||||||
* @typedef {{controls: ol.Collection,
|
* @typedef {{controls: ol.Collection,
|
||||||
* interactions: ol.Collection,
|
* interactions: ol.Collection,
|
||||||
|
* ol3Logo: boolean,
|
||||||
* overlays: ol.Collection,
|
* overlays: ol.Collection,
|
||||||
* rendererConstructor:
|
* rendererConstructor:
|
||||||
* function(new: ol.renderer.Map, Element, ol.Map),
|
* function(new: ol.renderer.Map, Element, ol.Map),
|
||||||
@@ -1261,6 +1306,8 @@ ol.Map.createOptionsInternal = function(options) {
|
|||||||
*/
|
*/
|
||||||
var values = {};
|
var values = {};
|
||||||
|
|
||||||
|
var ol3Logo = goog.isDef(options.ol3Logo) ? options.ol3Logo : true;
|
||||||
|
|
||||||
var layerGroup = (options.layers instanceof ol.layer.Group) ?
|
var layerGroup = (options.layers instanceof ol.layer.Group) ?
|
||||||
options.layers : new ol.layer.Group({layers: options.layers});
|
options.layers : new ol.layer.Group({layers: options.layers});
|
||||||
values[ol.MapProperty.LAYERGROUP] = layerGroup;
|
values[ol.MapProperty.LAYERGROUP] = layerGroup;
|
||||||
@@ -1348,6 +1395,7 @@ ol.Map.createOptionsInternal = function(options) {
|
|||||||
return {
|
return {
|
||||||
controls: controls,
|
controls: controls,
|
||||||
interactions: interactions,
|
interactions: interactions,
|
||||||
|
ol3Logo: ol3Logo,
|
||||||
overlays: overlays,
|
overlays: overlays,
|
||||||
rendererConstructor: rendererConstructor,
|
rendererConstructor: rendererConstructor,
|
||||||
values: values
|
values: values
|
||||||
|
|||||||
@@ -162,7 +162,7 @@ ol.renderer.Layer.prototype.updateAttributions =
|
|||||||
ol.renderer.Layer.prototype.updateLogos = function(frameState, source) {
|
ol.renderer.Layer.prototype.updateLogos = function(frameState, source) {
|
||||||
var logo = source.getLogo();
|
var logo = source.getLogo();
|
||||||
if (goog.isDef(logo)) {
|
if (goog.isDef(logo)) {
|
||||||
frameState.logos[logo] = true;
|
frameState.logos[logo] = '';
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -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);
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user