Merge remote-tracking branch 'openlayers/master' into vector-api

This commit is contained in:
Tom Payne
2013-12-16 13:37:11 +01:00
5 changed files with 66 additions and 30 deletions

View File

@@ -497,6 +497,7 @@
/**
* @typedef {Object} olx.source.MapGuideOptions
* @property {string|undefined} url The mapagent url.
* @property {number|undefined} displayDpi The display resolution. Default is `96`.
* @property {number|undefined} metersPerUnit The meters-per-unit value. Default is `1`.
* @property {ol.Extent|undefined} extent Extent.
* @property {boolean|undefined} useOverlay If `true`, will use
@@ -528,6 +529,8 @@
/**
* @typedef {Object} olx.source.OSMOptions
* @property {Array.<ol.Attribution>|undefined} attributions Attributions.
* @property {null|string|undefined} crossOrigin crossOrigin setting for image
* requests. Default is `anonymous`.
* @property {number|undefined} maxZoom Max zoom.
* @property {ol.TileLoadFunctionType|undefined} tileLoadFunction Optional
* function to load a tile given a URL.

View File

@@ -31,6 +31,13 @@ ol.source.MapGuide = function(options) {
imageUrlFunction: imageUrlFunction
});
/**
* @private
* @type {number}
*/
this.displayDpi_ = goog.isDef(options.displayDpi) ?
options.displayDpi : 96;
/**
* @private
* @type {number}
@@ -91,20 +98,20 @@ ol.source.MapGuide.prototype.getImage =
/**
* @param {ol.Extent} extent The map extents.
* @param {ol.Size} size the viewport size.
* @param {number} metersPerUnit The meters-per-unit value.
* @param {number} dpi The display resolution.
* @return {number} The computed map scale.
*/
ol.source.MapGuide.prototype.getScale = function(extent, size) {
var mcsW = extent[2] - extent[0];
var mcsH = extent[3] - extent[1];
ol.source.MapGuide.getScale = function(extent, size, metersPerUnit, dpi) {
var mcsW = ol.extent.getWidth(extent);
var mcsH = ol.extent.getHeight(extent);
var devW = size[0];
var devH = size[1];
var dpi = 96;
var mpu = this.metersPerUnit_;
var mpp = 0.0254 / dpi;
if (devH * mcsW > devW * mcsH) {
return mcsW * mpu / (devW * mpp); // width limited
return mcsW * metersPerUnit / (devW * mpp); // width limited
} else {
return mcsH * mpu / (devH * mpp); // height limited
return mcsH * metersPerUnit / (devH * mpp); // height limited
}
};
@@ -119,19 +126,21 @@ ol.source.MapGuide.prototype.getScale = function(extent, size) {
*/
ol.source.MapGuide.prototype.getUrl =
function(baseUrl, params, extent, size, projection) {
var scale = this.getScale(extent, size);
var scale = ol.source.MapGuide.getScale(extent, size,
this.metersPerUnit_, this.displayDpi_);
var center = ol.extent.getCenter(extent);
var baseParams = {
'OPERATION': this.useOverlay_ ? 'GETDYNAMICMAPOVERLAYIMAGE' : 'GETMAPIMAGE',
'VERSION': '2.0.0',
'LOCALE': 'en',
'CLIENTAGENT': 'ol.source.MapGuide source',
'CLIP': '1',
'SETDISPLAYDPI': 96,
'SETDISPLAYDPI': this.displayDpi_,
'SETDISPLAYWIDTH': Math.round(size[0]),
'SETDISPLAYHEIGHT': Math.round(size[1]),
'SETVIEWSCALE': scale,
'SETVIEWCENTERX': (extent[0] + extent[2]) / 2,
'SETVIEWCENTERY': (extent[1] + extent[3]) / 2
'SETVIEWCENTERX': center[0],
'SETVIEWCENTERY': center[1]
};
goog.object.extend(baseParams, params);
return goog.uri.utils.appendParamsFromMap(baseUrl, baseParams);

View File

@@ -22,12 +22,15 @@ ol.source.OSM = function(opt_options) {
attributions = ol.source.OSM.ATTRIBUTIONS;
}
var crossOrigin = goog.isDef(options.crossOrigin) ?
options.crossOrigin : 'anonymous';
var url = goog.isDef(options.url) ?
options.url : 'http://{a-c}.tile.openstreetmap.org/{z}/{x}/{y}.png';
goog.base(this, {
attributions: attributions,
crossOrigin: 'anonymous',
crossOrigin: crossOrigin,
opaque: true,
maxZoom: options.maxZoom,
tileLoadFunction: options.tileLoadFunction,