Merge pull request #2316 from tschaub/layer-extent
Support for layers with limited extent.
This commit is contained in:
@@ -15,6 +15,7 @@ var bounds = [
|
||||
var map = new ol.Map({
|
||||
layers: [
|
||||
new ol.layer.Image({
|
||||
extent: bounds,
|
||||
source: new ol.source.MapGuide({
|
||||
projection: 'EPSG:4326',
|
||||
url: agentUrl,
|
||||
@@ -24,8 +25,7 @@ var map = new ol.Map({
|
||||
MAPDEFINITION: mdf,
|
||||
FORMAT: 'PNG'
|
||||
},
|
||||
ratio: 2,
|
||||
extent: bounds
|
||||
ratio: 2
|
||||
})
|
||||
})
|
||||
],
|
||||
|
||||
@@ -44,6 +44,7 @@ ol.proj.addCoordinateTransforms('EPSG:4326', projection,
|
||||
var extent = [420000, 30000, 900000, 350000];
|
||||
var layers = [
|
||||
new ol.layer.Tile({
|
||||
extent: extent,
|
||||
source: new ol.source.TileWMS({
|
||||
url: 'http://wms.geo.admin.ch/',
|
||||
crossOrigin: 'anonymous',
|
||||
@@ -57,11 +58,11 @@ var layers = [
|
||||
'LAYERS': 'ch.swisstopo.pixelkarte-farbe-pk1000.noscale',
|
||||
'FORMAT': 'image/jpeg'
|
||||
},
|
||||
extent: extent,
|
||||
serverType: 'mapserver'
|
||||
})
|
||||
}),
|
||||
new ol.layer.Tile({
|
||||
extent: extent,
|
||||
source: new ol.source.TileWMS({
|
||||
url: 'http://wms.geo.admin.ch/',
|
||||
crossOrigin: 'anonymous',
|
||||
@@ -72,7 +73,6 @@ var layers = [
|
||||
'National parks / geo.admin.ch</a>'
|
||||
})],
|
||||
params: {'LAYERS': 'ch.bafu.schutzgebiete-paerke_nationaler_bedeutung'},
|
||||
extent: extent,
|
||||
serverType: 'mapserver'
|
||||
})
|
||||
})
|
||||
|
||||
@@ -24,6 +24,7 @@ projection.setExtent([485869.5728, 76443.1884, 837076.5648, 299941.7864]);
|
||||
var extent = [420000, 30000, 900000, 350000];
|
||||
var layers = [
|
||||
new ol.layer.Image({
|
||||
extent: extent,
|
||||
source: new ol.source.ImageWMS({
|
||||
url: 'http://wms.geo.admin.ch/',
|
||||
crossOrigin: 'anonymous',
|
||||
@@ -37,11 +38,11 @@ var layers = [
|
||||
'LAYERS': 'ch.swisstopo.pixelkarte-farbe-pk1000.noscale',
|
||||
'FORMAT': 'image/jpeg'
|
||||
},
|
||||
serverType: /** @type {ol.source.wms.ServerType} */ ('mapserver'),
|
||||
extent: extent
|
||||
serverType: /** @type {ol.source.wms.ServerType} */ ('mapserver')
|
||||
})
|
||||
}),
|
||||
new ol.layer.Image({
|
||||
extent: extent,
|
||||
source: new ol.source.ImageWMS({
|
||||
url: 'http://wms.geo.admin.ch/',
|
||||
crossOrigin: 'anonymous',
|
||||
@@ -52,8 +53,7 @@ var layers = [
|
||||
'National parks / geo.admin.ch</a>'
|
||||
})],
|
||||
params: {'LAYERS': 'ch.bafu.schutzgebiete-paerke_nationaler_bedeutung'},
|
||||
serverType: /** @type {ol.source.wms.ServerType} */ ('mapserver'),
|
||||
extent: extent
|
||||
serverType: /** @type {ol.source.wms.ServerType} */ ('mapserver')
|
||||
})
|
||||
})
|
||||
];
|
||||
|
||||
@@ -11,11 +11,11 @@ var layers = [
|
||||
source: new ol.source.MapQuest({layer: 'sat'})
|
||||
}),
|
||||
new ol.layer.Image({
|
||||
extent: [-13884991, 2870341, -7455066, 6338219],
|
||||
source: new ol.source.ImageWMS({
|
||||
url: 'http://demo.opengeo.org/geoserver/wms',
|
||||
params: {'LAYERS': 'topp:states'},
|
||||
serverType: 'geoserver',
|
||||
extent: [-13884991, 2870341, -7455066, 6338219]
|
||||
serverType: 'geoserver'
|
||||
})
|
||||
})
|
||||
];
|
||||
|
||||
@@ -10,10 +10,10 @@ var layers = [
|
||||
source: new ol.source.MapQuest({layer: 'sat'})
|
||||
}),
|
||||
new ol.layer.Tile({
|
||||
extent: [-13884991, 2870341, -7455066, 6338219],
|
||||
source: new ol.source.TileWMS(/** @type {olx.source.TileWMSOptions} */ ({
|
||||
url: 'http://demo.opengeo.org/geoserver/wms',
|
||||
params: {'LAYERS': 'topp:states', 'TILED': true},
|
||||
extent: [-13884991, 2870341, -7455066, 6338219],
|
||||
serverType: 'geoserver'
|
||||
}))
|
||||
})
|
||||
|
||||
@@ -9,6 +9,11 @@
|
||||
<link rel="stylesheet" href="../resources/layout.css" type="text/css">
|
||||
<link rel="stylesheet" href="../resources/bootstrap/css/bootstrap-responsive.min.css" type="text/css">
|
||||
<title>WMTS HiDPI example</title>
|
||||
<style>
|
||||
.map {
|
||||
background: white;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
|
||||
@@ -23,7 +23,6 @@ var urls = [
|
||||
var hiDPI = ol.BrowserFeature.DEVICE_PIXEL_RATIO > 1;
|
||||
|
||||
var source = new ol.source.WMTS({
|
||||
extent: [977844.377599999, 5837774.6617, 1915609.8654, 6295560.8122],
|
||||
projection: 'EPSG:3857',
|
||||
layer: hiDPI ? 'bmaphidpi' : 'geolandbasemap',
|
||||
tilePixelRatio: hiDPI ? 2 : 1,
|
||||
@@ -64,6 +63,7 @@ var source = new ol.source.WMTS({
|
||||
var map = new ol.Map({
|
||||
layers: [
|
||||
new ol.layer.Tile({
|
||||
extent: [977844.377599999, 5837774.6617, 1915609.8654, 6295560.8122],
|
||||
source: source
|
||||
})
|
||||
],
|
||||
|
||||
@@ -35,6 +35,7 @@ var map = new ol.Map({
|
||||
}),
|
||||
new ol.layer.Tile({
|
||||
opacity: 0.7,
|
||||
extent: projectionExtent,
|
||||
source: new ol.source.WMTS({
|
||||
attributions: [attribution],
|
||||
url: 'http://services.arcgisonline.com/arcgis/rest/' +
|
||||
@@ -48,7 +49,6 @@ var map = new ol.Map({
|
||||
resolutions: resolutions,
|
||||
matrixIds: matrixIds
|
||||
}),
|
||||
extent: projectionExtent,
|
||||
style: 'default'
|
||||
})
|
||||
})
|
||||
|
||||
215
externs/olx.js
215
externs/olx.js
@@ -1969,6 +1969,7 @@ olx.interaction.SelectOptions.prototype.toggleCondition;
|
||||
* opacity: (number|undefined),
|
||||
* saturation: (number|undefined),
|
||||
* visible: (boolean|undefined),
|
||||
* extent: (ol.Extent|undefined),
|
||||
* minResolution: (number|undefined),
|
||||
* maxResolution: (number|undefined)}}
|
||||
* @api
|
||||
@@ -2018,6 +2019,14 @@ olx.layer.BaseOptions.prototype.saturation;
|
||||
olx.layer.BaseOptions.prototype.visible;
|
||||
|
||||
|
||||
/**
|
||||
* The bounding extent for layer rendering. The layer will not be rendered
|
||||
* outside of this extent.
|
||||
* @type {ol.Extent|undefined}
|
||||
*/
|
||||
olx.layer.BaseOptions.prototype.extent;
|
||||
|
||||
|
||||
/**
|
||||
* The minimum resolution (inclusive) at which this layer will be visible.
|
||||
* @type {number|undefined}
|
||||
@@ -2040,6 +2049,7 @@ olx.layer.BaseOptions.prototype.maxResolution;
|
||||
* saturation: (number|undefined),
|
||||
* source: ol.source.Source,
|
||||
* visible: (boolean|undefined),
|
||||
* extent: (ol.Extent|undefined),
|
||||
* minResolution: (number|undefined),
|
||||
* maxResolution: (number|undefined)}}
|
||||
* @api
|
||||
@@ -2096,6 +2106,14 @@ olx.layer.LayerOptions.prototype.source;
|
||||
olx.layer.LayerOptions.prototype.visible;
|
||||
|
||||
|
||||
/**
|
||||
* The bounding extent for layer rendering. The layer will not be rendered
|
||||
* outside of this extent.
|
||||
* @type {ol.Extent|undefined}
|
||||
*/
|
||||
olx.layer.LayerOptions.prototype.extent;
|
||||
|
||||
|
||||
/**
|
||||
* The minimum resolution (inclusive) at which this layer will be visible.
|
||||
* @type {number|undefined}
|
||||
@@ -2117,6 +2135,7 @@ olx.layer.LayerOptions.prototype.maxResolution;
|
||||
* opacity: (number|undefined),
|
||||
* saturation: (number|undefined),
|
||||
* visible: (boolean|undefined),
|
||||
* extent: (ol.Extent|undefined),
|
||||
* minResolution: (number|undefined),
|
||||
* maxResolution: (number|undefined),
|
||||
* layers: (Array.<ol.layer.Base>|ol.Collection|undefined)}}
|
||||
@@ -2167,6 +2186,14 @@ olx.layer.GroupOptions.prototype.saturation;
|
||||
olx.layer.GroupOptions.prototype.visible;
|
||||
|
||||
|
||||
/**
|
||||
* The bounding extent for layer rendering. The layer will not be rendered
|
||||
* outside of this extent.
|
||||
* @type {ol.Extent|undefined}
|
||||
*/
|
||||
olx.layer.GroupOptions.prototype.extent;
|
||||
|
||||
|
||||
/**
|
||||
* The minimum resolution (inclusive) at which this layer will be visible.
|
||||
* @type {number|undefined}
|
||||
@@ -2197,6 +2224,7 @@ olx.layer.GroupOptions.prototype.layers;
|
||||
* blur: (number|undefined),
|
||||
* shadow: (number|undefined),
|
||||
* weight: (string|function(ol.Feature):number|undefined),
|
||||
* extent: (ol.Extent|undefined),
|
||||
* minResolution: (number|undefined),
|
||||
* maxResolution: (number|undefined),
|
||||
* opacity: (number|undefined),
|
||||
@@ -2267,6 +2295,14 @@ olx.layer.HeatmapOptions.prototype.shadow;
|
||||
olx.layer.HeatmapOptions.prototype.weight;
|
||||
|
||||
|
||||
/**
|
||||
* The bounding extent for layer rendering. The layer will not be rendered
|
||||
* outside of this extent.
|
||||
* @type {ol.Extent|undefined}
|
||||
*/
|
||||
olx.layer.HeatmapOptions.prototype.extent;
|
||||
|
||||
|
||||
/**
|
||||
* The minimum resolution (inclusive) at which this layer will be visible.
|
||||
* @type {number|undefined}
|
||||
@@ -2318,6 +2354,7 @@ olx.layer.HeatmapOptions.prototype.visible;
|
||||
* saturation: (number|undefined),
|
||||
* source: ol.source.Source,
|
||||
* visible: (boolean|undefined),
|
||||
* extent: (ol.Extent|undefined),
|
||||
* minResolution: (number|undefined),
|
||||
* maxResolution: (number|undefined),
|
||||
* useInterimTilesOnError: (boolean|undefined)}}
|
||||
@@ -2382,6 +2419,14 @@ olx.layer.TileOptions.prototype.source;
|
||||
olx.layer.TileOptions.prototype.visible;
|
||||
|
||||
|
||||
/**
|
||||
* The bounding extent for layer rendering. The layer will not be rendered
|
||||
* outside of this extent.
|
||||
* @type {ol.Extent|undefined}
|
||||
*/
|
||||
olx.layer.TileOptions.prototype.extent;
|
||||
|
||||
|
||||
/**
|
||||
* The minimum resolution (inclusive) at which this layer will be visible.
|
||||
* @type {number|undefined}
|
||||
@@ -2450,6 +2495,14 @@ olx.layer.VectorOptions.prototype.renderOrder;
|
||||
olx.layer.VectorOptions.prototype.hue;
|
||||
|
||||
|
||||
/**
|
||||
* The bounding extent for layer rendering. The layer will not be rendered
|
||||
* outside of this extent.
|
||||
* @type {ol.Extent|undefined}
|
||||
*/
|
||||
olx.layer.VectorOptions.prototype.extent;
|
||||
|
||||
|
||||
/**
|
||||
* The minimum resolution (inclusive) at which this layer will be visible.
|
||||
* @type {number|undefined}
|
||||
@@ -2569,7 +2622,6 @@ olx.source.BingMapsOptions.prototype.tileLoadFunction;
|
||||
|
||||
/**
|
||||
* @typedef {{attributions: (Array.<ol.Attribution>|undefined),
|
||||
* extent: (ol.Extent|undefined),
|
||||
* format: ol.format.Feature,
|
||||
* logo: (string|olx.LogoOptions|undefined),
|
||||
* projection: ol.proj.ProjectionLike}}
|
||||
@@ -2585,13 +2637,6 @@ olx.source.FormatVectorOptions;
|
||||
olx.source.FormatVectorOptions.prototype.attributions;
|
||||
|
||||
|
||||
/**
|
||||
* Extent.
|
||||
* @type {ol.Extent|undefined}
|
||||
*/
|
||||
olx.source.FormatVectorOptions.prototype.extent;
|
||||
|
||||
|
||||
/**
|
||||
* Format.
|
||||
* @type {ol.format.Feature}
|
||||
@@ -2616,7 +2661,6 @@ olx.source.FormatVectorOptions.prototype.projection;
|
||||
/**
|
||||
* @typedef {{attributions: (Array.<ol.Attribution>|undefined),
|
||||
* defaultProjection: ol.proj.ProjectionLike,
|
||||
* extent: (ol.Extent|undefined),
|
||||
* logo: (string|olx.LogoOptions|undefined),
|
||||
* object: (GeoJSONObject|undefined),
|
||||
* projection: ol.proj.ProjectionLike,
|
||||
@@ -2642,13 +2686,6 @@ olx.source.GeoJSONOptions.prototype.attributions;
|
||||
olx.source.GeoJSONOptions.prototype.defaultProjection;
|
||||
|
||||
|
||||
/**
|
||||
* Extent.
|
||||
* @type {ol.Extent|undefined}
|
||||
*/
|
||||
olx.source.GeoJSONOptions.prototype.extent;
|
||||
|
||||
|
||||
/**
|
||||
* Logo.
|
||||
* @type{string|olx.LogoOptions|undefined}
|
||||
@@ -2695,7 +2732,6 @@ olx.source.GeoJSONOptions.prototype.urls;
|
||||
/**
|
||||
* @typedef {{attributions: (Array.<ol.Attribution>|undefined),
|
||||
* doc: (Document|undefined),
|
||||
* extent: (ol.Extent|undefined),
|
||||
* logo: (string|olx.LogoOptions|undefined),
|
||||
* node: (Node|undefined),
|
||||
* projection: ol.proj.ProjectionLike,
|
||||
@@ -2721,13 +2757,6 @@ olx.source.GPXOptions.prototype.attributions;
|
||||
olx.source.GPXOptions.prototype.doc;
|
||||
|
||||
|
||||
/**
|
||||
* Extent.
|
||||
* @type {ol.Extent|undefined}
|
||||
*/
|
||||
olx.source.GPXOptions.prototype.extent;
|
||||
|
||||
|
||||
/**
|
||||
* Logo.
|
||||
* @type{string|olx.LogoOptions|undefined}
|
||||
@@ -2774,7 +2803,6 @@ olx.source.GPXOptions.prototype.urls;
|
||||
/**
|
||||
* @typedef {{attributions: (Array.<ol.Attribution>|undefined),
|
||||
* crossOrigin: (null|string|undefined),
|
||||
* extent: (ol.Extent|undefined),
|
||||
* logo: (string|olx.LogoOptions|undefined),
|
||||
* opaque: (boolean|undefined),
|
||||
* projection: ol.proj.ProjectionLike,
|
||||
@@ -2804,13 +2832,6 @@ olx.source.TileImageOptions.prototype.attributions;
|
||||
olx.source.TileImageOptions.prototype.crossOrigin;
|
||||
|
||||
|
||||
/**
|
||||
* Extent.
|
||||
* @type {ol.Extent|undefined}
|
||||
*/
|
||||
olx.source.TileImageOptions.prototype.extent;
|
||||
|
||||
|
||||
/**
|
||||
* Logo.
|
||||
* @type{string|olx.LogoOptions|undefined}
|
||||
@@ -2875,7 +2896,6 @@ olx.source.TileImageOptions.prototype.tileUrlFunction;
|
||||
/**
|
||||
* @typedef {{attributions: (Array.<ol.Attribution>|undefined),
|
||||
* defaultProjection: ol.proj.ProjectionLike,
|
||||
* extent: (ol.Extent|undefined),
|
||||
* format: ol.format.Feature,
|
||||
* logo: (string|olx.LogoOptions|undefined),
|
||||
* object: (GeoJSONObject|undefined),
|
||||
@@ -2903,13 +2923,6 @@ olx.source.TileVectorOptions.prototype.attributions;
|
||||
olx.source.TileVectorOptions.prototype.defaultProjection;
|
||||
|
||||
|
||||
/**
|
||||
* Extent.
|
||||
* @type {ol.Extent|undefined}
|
||||
*/
|
||||
olx.source.TileVectorOptions.prototype.extent;
|
||||
|
||||
|
||||
/**
|
||||
* Format.
|
||||
* @type {ol.format.Feature}
|
||||
@@ -2971,7 +2984,6 @@ olx.source.TileVectorOptions.prototype.urls;
|
||||
/**
|
||||
* @typedef {{attributions: (Array.<ol.Attribution>|undefined),
|
||||
* defaultProjection: ol.proj.ProjectionLike,
|
||||
* extent: (ol.Extent|undefined),
|
||||
* logo: (string|olx.LogoOptions|undefined),
|
||||
* object: (GeoJSONObject|undefined),
|
||||
* projection: ol.proj.ProjectionLike,
|
||||
@@ -2996,13 +3008,6 @@ olx.source.TopoJSONOptions.prototype.attributions;
|
||||
olx.source.TopoJSONOptions.prototype.defaultProjection;
|
||||
|
||||
|
||||
/**
|
||||
* Extent.
|
||||
* @type {ol.Extent|undefined}
|
||||
*/
|
||||
olx.source.TopoJSONOptions.prototype.extent;
|
||||
|
||||
|
||||
/**
|
||||
* Logo.
|
||||
* @type{string|olx.LogoOptions|undefined}
|
||||
@@ -3091,7 +3096,6 @@ olx.source.IGCOptions.prototype.urls;
|
||||
* @typedef {{url: (string|undefined),
|
||||
* displayDpi: (number|undefined),
|
||||
* metersPerUnit: (number|undefined),
|
||||
* extent: (ol.Extent|undefined),
|
||||
* hidpi: (boolean|undefined),
|
||||
* useOverlay: (boolean|undefined),
|
||||
* projection: ol.proj.ProjectionLike,
|
||||
@@ -3124,13 +3128,6 @@ olx.source.MapGuideOptions.prototype.displayDpi;
|
||||
olx.source.MapGuideOptions.prototype.metersPerUnit;
|
||||
|
||||
|
||||
/**
|
||||
* Extent.
|
||||
* @type {ol.Extent|undefined}
|
||||
*/
|
||||
olx.source.MapGuideOptions.prototype.extent;
|
||||
|
||||
|
||||
/**
|
||||
* Use the `ol.Map#pixelRatio` value when requesting the image from the remote
|
||||
* server. Default is `true`.
|
||||
@@ -3179,7 +3176,6 @@ olx.source.MapGuideOptions.prototype.params;
|
||||
* @typedef {{attributions: (Array.<ol.Attribution>|undefined),
|
||||
* defaultStyle: (Array.<ol.style.Style>|undefined),
|
||||
* doc: (Document|undefined),
|
||||
* extent: (ol.Extent|undefined),
|
||||
* logo: (string|olx.LogoOptions|undefined),
|
||||
* node: (Node|undefined),
|
||||
* projection: ol.proj.ProjectionLike,
|
||||
@@ -3212,13 +3208,6 @@ olx.source.KMLOptions.prototype.defaultStyle;
|
||||
olx.source.KMLOptions.prototype.doc;
|
||||
|
||||
|
||||
/**
|
||||
* Extent.
|
||||
* @type {ol.Extent|undefined}
|
||||
*/
|
||||
olx.source.KMLOptions.prototype.extent;
|
||||
|
||||
|
||||
/**
|
||||
* Logo.
|
||||
* @type{string|olx.LogoOptions|undefined}
|
||||
@@ -3285,21 +3274,13 @@ olx.source.MapQuestOptions.prototype.tileLoadFunction;
|
||||
|
||||
|
||||
/**
|
||||
* @typedef {{extent: (ol.Extent|undefined),
|
||||
* projection: ol.proj.ProjectionLike,
|
||||
* @typedef {{projection: ol.proj.ProjectionLike,
|
||||
* tileGrid: (ol.tilegrid.TileGrid|undefined)}}
|
||||
* @api
|
||||
*/
|
||||
olx.source.TileDebugOptions;
|
||||
|
||||
|
||||
/**
|
||||
* Extent.
|
||||
* @type {ol.Extent|undefined}
|
||||
*/
|
||||
olx.source.TileDebugOptions.prototype.extent;
|
||||
|
||||
|
||||
/**
|
||||
* Projection.
|
||||
* @type {ol.proj.ProjectionLike}
|
||||
@@ -3365,7 +3346,6 @@ olx.source.OSMOptions.prototype.url;
|
||||
* @typedef {{attributions: (Array.<ol.Attribution>|undefined),
|
||||
* defaultStyle: (Array.<ol.style.Style>|undefined),
|
||||
* doc: (Document|undefined),
|
||||
* extent: (ol.Extent|undefined),
|
||||
* logo: (string|olx.LogoOptions|undefined),
|
||||
* node: (Node|undefined),
|
||||
* projection: ol.proj.ProjectionLike,
|
||||
@@ -3399,13 +3379,6 @@ olx.source.OSMXMLOptions.prototype.defaultStyle;
|
||||
olx.source.OSMXMLOptions.prototype.doc;
|
||||
|
||||
|
||||
/**
|
||||
* Extent.
|
||||
* @type {ol.Extent|undefined}
|
||||
*/
|
||||
olx.source.OSMXMLOptions.prototype.extent;
|
||||
|
||||
|
||||
/**
|
||||
* Logo.
|
||||
* @type{string|olx.LogoOptions|undefined}
|
||||
@@ -3458,7 +3431,6 @@ olx.source.OSMXMLOptions.prototype.urls;
|
||||
/**
|
||||
* @typedef {{attributions: (Array.<ol.Attribution>|undefined),
|
||||
* canvasFunction: ol.CanvasFunctionType,
|
||||
* extent: (ol.Extent|undefined),
|
||||
* logo: (string|olx.LogoOptions|undefined),
|
||||
* projection: ol.proj.ProjectionLike,
|
||||
* ratio: (number|undefined),
|
||||
@@ -3490,13 +3462,6 @@ olx.source.ImageCanvasOptions.prototype.attributions;
|
||||
olx.source.ImageCanvasOptions.prototype.canvasFunction;
|
||||
|
||||
|
||||
/**
|
||||
* Extent.
|
||||
* @type {ol.Extent|undefined}
|
||||
*/
|
||||
olx.source.ImageCanvasOptions.prototype.extent;
|
||||
|
||||
|
||||
/**
|
||||
* Logo.
|
||||
* @type{string|olx.LogoOptions|undefined}
|
||||
@@ -3536,7 +3501,6 @@ olx.source.ImageCanvasOptions.prototype.state;
|
||||
|
||||
/**
|
||||
* @typedef {{attributions: (Array.<ol.Attribution>|undefined),
|
||||
* extent: (ol.Extent|undefined),
|
||||
* logo: (string|olx.LogoOptions|undefined),
|
||||
* projection: ol.proj.ProjectionLike,
|
||||
* ratio: (number|undefined),
|
||||
@@ -3555,13 +3519,6 @@ olx.source.ImageVectorOptions;
|
||||
olx.source.ImageVectorOptions.prototype.attributions;
|
||||
|
||||
|
||||
/**
|
||||
* Extent.
|
||||
* @type {ol.Extent|undefined}
|
||||
*/
|
||||
olx.source.ImageVectorOptions.prototype.extent;
|
||||
|
||||
|
||||
/**
|
||||
* Logo.
|
||||
* @type{string|olx.LogoOptions|undefined}
|
||||
@@ -3610,7 +3567,6 @@ olx.source.ImageVectorOptions.prototype.style;
|
||||
/**
|
||||
* @typedef {{attributions: (Array.<ol.Attribution>|undefined),
|
||||
* crossOrigin: (null|string|undefined),
|
||||
* extent: (ol.Extent|undefined),
|
||||
* hidpi: (boolean|undefined),
|
||||
* serverType: (ol.source.wms.ServerType|string|undefined),
|
||||
* logo: (string|olx.LogoOptions|undefined),
|
||||
@@ -3638,13 +3594,6 @@ olx.source.ImageWMSOptions.prototype.attributions;
|
||||
olx.source.ImageWMSOptions.prototype.crossOrigin;
|
||||
|
||||
|
||||
/**
|
||||
* Extent.
|
||||
* @type {ol.Extent|undefined}
|
||||
*/
|
||||
olx.source.ImageWMSOptions.prototype.extent;
|
||||
|
||||
|
||||
/**
|
||||
* Use the `ol.Map#pixelRatio` value when requesting the image from the remote
|
||||
* server. Default is `true`.
|
||||
@@ -3763,7 +3712,6 @@ olx.source.StamenOptions.prototype.url;
|
||||
/**
|
||||
* @typedef {{attributions: (Array.<ol.Attribution>|undefined),
|
||||
* crossOrigin: (null|string|undefined),
|
||||
* extent: (ol.Extent|undefined),
|
||||
* imageExtent: (ol.Extent|undefined),
|
||||
* imageSize: (ol.Size|undefined),
|
||||
* logo: (string|olx.LogoOptions|undefined),
|
||||
@@ -3788,13 +3736,6 @@ olx.source.ImageStaticOptions.prototype.attributions;
|
||||
olx.source.ImageStaticOptions.prototype.crossOrigin;
|
||||
|
||||
|
||||
/**
|
||||
* Extent.
|
||||
* @type {ol.Extent|undefined}
|
||||
*/
|
||||
olx.source.ImageStaticOptions.prototype.extent;
|
||||
|
||||
|
||||
/**
|
||||
* Extent of the image.
|
||||
* @type {ol.Extent|undefined}
|
||||
@@ -3832,7 +3773,6 @@ olx.source.ImageStaticOptions.prototype.url;
|
||||
|
||||
/**
|
||||
* @typedef {{attributions: (Array.<ol.Attribution>|undefined),
|
||||
* extent: (ol.Extent|undefined),
|
||||
* format: ol.format.Feature,
|
||||
* loader: function(this: ol.source.ServerVector, ol.Extent, number, ol.proj.Projection),
|
||||
* strategy: (function(ol.Extent, number): Array.<ol.Extent>|undefined),
|
||||
@@ -3850,13 +3790,6 @@ olx.source.ServerVectorOptions;
|
||||
olx.source.ServerVectorOptions.prototype.attributions;
|
||||
|
||||
|
||||
/**
|
||||
* Extent.
|
||||
* @type {ol.Extent|undefined}
|
||||
*/
|
||||
olx.source.ServerVectorOptions.prototype.extent;
|
||||
|
||||
|
||||
/**
|
||||
* Format.
|
||||
* @type {ol.format.Feature}
|
||||
@@ -3927,7 +3860,6 @@ olx.source.TileJSONOptions.prototype.url;
|
||||
* @typedef {{attributions: (Array.<ol.Attribution>|undefined),
|
||||
* params: Object.<string,*>,
|
||||
* crossOrigin: (null|string|undefined),
|
||||
* extent: (ol.Extent|undefined),
|
||||
* gutter: (number|undefined),
|
||||
* hidpi: (boolean|undefined),
|
||||
* logo: (string|olx.LogoOptions|undefined),
|
||||
@@ -3966,13 +3898,6 @@ olx.source.TileWMSOptions.prototype.params;
|
||||
olx.source.TileWMSOptions.prototype.crossOrigin;
|
||||
|
||||
|
||||
/**
|
||||
* Extent.
|
||||
* @type {ol.Extent|undefined}
|
||||
*/
|
||||
olx.source.TileWMSOptions.prototype.extent;
|
||||
|
||||
|
||||
/**
|
||||
* The size in pixels of the gutter around image tiles to ignore. By setting
|
||||
* this property to a non-zero value, images will be requested that are wider
|
||||
@@ -4059,7 +3984,6 @@ olx.source.TileWMSOptions.prototype.urls;
|
||||
|
||||
/**
|
||||
* @typedef {{attributions: (Array.<ol.Attribution>|undefined),
|
||||
* extent: (ol.Extent|undefined),
|
||||
* features: (Array.<ol.Feature>|undefined),
|
||||
* logo: (string|olx.LogoOptions|undefined),
|
||||
* projection: ol.proj.ProjectionLike,
|
||||
@@ -4076,13 +4000,6 @@ olx.source.VectorOptions;
|
||||
olx.source.VectorOptions.prototype.attributions;
|
||||
|
||||
|
||||
/**
|
||||
* Extent.
|
||||
* @type {ol.Extent|undefined}
|
||||
*/
|
||||
olx.source.VectorOptions.prototype.extent;
|
||||
|
||||
|
||||
/**
|
||||
* Features.
|
||||
* @type {Array.<ol.Feature>|undefined}
|
||||
@@ -4115,7 +4032,6 @@ olx.source.VectorOptions.prototype.state;
|
||||
* @typedef {{arrayBuffer: (ArrayBuffer|undefined),
|
||||
* attributions: (Array.<ol.Attribution>|undefined),
|
||||
* doc: (Document|undefined),
|
||||
* extent: (ol.Extent|undefined),
|
||||
* format: ol.format.Feature,
|
||||
* logo: (string|olx.LogoOptions|undefined),
|
||||
* node: (Node|undefined),
|
||||
@@ -4150,13 +4066,6 @@ olx.source.StaticVectorOptions.prototype.attributions;
|
||||
olx.source.StaticVectorOptions.prototype.doc;
|
||||
|
||||
|
||||
/**
|
||||
* Extent.
|
||||
* @type {ol.Extent|undefined}
|
||||
*/
|
||||
olx.source.StaticVectorOptions.prototype.extent;
|
||||
|
||||
|
||||
/**
|
||||
* Format.
|
||||
* @type {ol.format.Feature}
|
||||
@@ -4216,7 +4125,6 @@ olx.source.StaticVectorOptions.prototype.urls;
|
||||
/**
|
||||
* @typedef {{attributions: (Array.<ol.Attribution>|undefined),
|
||||
* crossOrigin: (string|null|undefined),
|
||||
* extent: (ol.Extent|undefined),
|
||||
* logo: (string|olx.LogoOptions|undefined),
|
||||
* tileGrid: ol.tilegrid.WMTS,
|
||||
* projection: ol.proj.ProjectionLike,
|
||||
@@ -4251,13 +4159,6 @@ olx.source.WMTSOptions.prototype.attributions;
|
||||
olx.source.WMTSOptions.prototype.crossOrigin;
|
||||
|
||||
|
||||
/**
|
||||
* Extent.
|
||||
* @type {ol.Extent|undefined}
|
||||
*/
|
||||
olx.source.WMTSOptions.prototype.extent;
|
||||
|
||||
|
||||
/**
|
||||
* Logo.
|
||||
* @type{string|olx.LogoOptions|undefined}
|
||||
@@ -4369,7 +4270,6 @@ olx.source.WMTSOptions.prototype.urls;
|
||||
/**
|
||||
* @typedef {{attributions: (Array.<ol.Attribution>|undefined),
|
||||
* crossOrigin: (null|string|undefined),
|
||||
* extent: (ol.Extent|undefined),
|
||||
* logo: (string|olx.LogoOptions|undefined),
|
||||
* projection: ol.proj.ProjectionLike,
|
||||
* maxZoom: (number|undefined),
|
||||
@@ -4399,13 +4299,6 @@ olx.source.XYZOptions.prototype.attributions;
|
||||
olx.source.XYZOptions.prototype.crossOrigin;
|
||||
|
||||
|
||||
/**
|
||||
* Extent.
|
||||
* @type {ol.Extent|undefined}
|
||||
*/
|
||||
olx.source.XYZOptions.prototype.extent;
|
||||
|
||||
|
||||
/**
|
||||
* Logo.
|
||||
* @type{string|olx.LogoOptions|undefined}
|
||||
|
||||
@@ -418,7 +418,11 @@ ol.extent.extendXY = function(extent, x, y) {
|
||||
* @return {number} Area.
|
||||
*/
|
||||
ol.extent.getArea = function(extent) {
|
||||
return ol.extent.getWidth(extent) * ol.extent.getHeight(extent);
|
||||
var area = 0;
|
||||
if (!ol.extent.isEmpty(extent)) {
|
||||
area = ol.extent.getWidth(extent) * ol.extent.getHeight(extent);
|
||||
}
|
||||
return area;
|
||||
};
|
||||
|
||||
|
||||
@@ -511,11 +515,44 @@ ol.extent.getHeight = function(extent) {
|
||||
* @return {number} Intersection area.
|
||||
*/
|
||||
ol.extent.getIntersectionArea = function(extent1, extent2) {
|
||||
var minX = Math.max(extent1[0], extent2[0]);
|
||||
var minY = Math.max(extent1[1], extent2[1]);
|
||||
var maxX = Math.min(extent1[2], extent2[2]);
|
||||
var maxY = Math.min(extent1[3], extent2[3]);
|
||||
return Math.max(0, maxX - minX) * Math.max(0, maxY - minY);
|
||||
var intersection = ol.extent.getIntersection(extent1, extent2);
|
||||
return ol.extent.getArea(intersection);
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* Get the intersection of two extents.
|
||||
* @param {ol.Extent} extent1 Extent 1.
|
||||
* @param {ol.Extent} extent2 Extent 2.
|
||||
* @param {ol.Extent=} opt_extent Optional extent to populate with intersection.
|
||||
* @return {ol.Extent} Intersecting extent.
|
||||
*/
|
||||
ol.extent.getIntersection = function(extent1, extent2, opt_extent) {
|
||||
var intersection = goog.isDef(opt_extent) ?
|
||||
opt_extent : ol.extent.createEmpty();
|
||||
if (ol.extent.intersects(extent1, extent2)) {
|
||||
if (extent1[0] > extent2[0]) {
|
||||
intersection[0] = extent1[0];
|
||||
} else {
|
||||
intersection[0] = extent2[0];
|
||||
}
|
||||
if (extent1[1] > extent2[1]) {
|
||||
intersection[1] = extent1[1];
|
||||
} else {
|
||||
intersection[1] = extent2[1];
|
||||
}
|
||||
if (extent1[2] < extent2[2]) {
|
||||
intersection[2] = extent1[2];
|
||||
} else {
|
||||
intersection[2] = extent2[2];
|
||||
}
|
||||
if (extent1[3] < extent2[3]) {
|
||||
intersection[3] = extent1[3];
|
||||
} else {
|
||||
intersection[3] = extent2[3];
|
||||
}
|
||||
}
|
||||
return intersection;
|
||||
};
|
||||
|
||||
|
||||
|
||||
@@ -19,6 +19,7 @@ ol.layer.LayerProperty = {
|
||||
OPACITY: 'opacity',
|
||||
SATURATION: 'saturation',
|
||||
VISIBLE: 'visible',
|
||||
EXTENT: 'extent',
|
||||
MAX_RESOLUTION: 'maxResolution',
|
||||
MIN_RESOLUTION: 'minResolution'
|
||||
};
|
||||
@@ -33,6 +34,7 @@ ol.layer.LayerProperty = {
|
||||
* saturation: number,
|
||||
* sourceState: ol.source.State,
|
||||
* visible: boolean,
|
||||
* extent: (ol.Extent|undefined),
|
||||
* maxResolution: number,
|
||||
* minResolution: number}}
|
||||
*/
|
||||
@@ -141,6 +143,7 @@ ol.layer.Base.prototype.getLayerState = function() {
|
||||
var saturation = this.getSaturation();
|
||||
var sourceState = this.getSourceState();
|
||||
var visible = this.getVisible();
|
||||
var extent = this.getExtent();
|
||||
var maxResolution = this.getMaxResolution();
|
||||
var minResolution = this.getMinResolution();
|
||||
return {
|
||||
@@ -152,6 +155,7 @@ ol.layer.Base.prototype.getLayerState = function() {
|
||||
saturation: goog.isDef(saturation) ? Math.max(saturation, 0) : 1,
|
||||
sourceState: sourceState,
|
||||
visible: goog.isDef(visible) ? !!visible : true,
|
||||
extent: extent,
|
||||
maxResolution: goog.isDef(maxResolution) ? maxResolution : Infinity,
|
||||
minResolution: goog.isDef(minResolution) ? Math.max(minResolution, 0) : 0
|
||||
};
|
||||
@@ -174,6 +178,21 @@ ol.layer.Base.prototype.getLayersArray = goog.abstractMethod;
|
||||
ol.layer.Base.prototype.getLayerStatesArray = goog.abstractMethod;
|
||||
|
||||
|
||||
/**
|
||||
* @return {ol.Extent|undefined} The layer extent.
|
||||
* @observable
|
||||
* @api
|
||||
*/
|
||||
ol.layer.Base.prototype.getExtent = function() {
|
||||
return /** @type {ol.Extent|undefined} */ (
|
||||
this.get(ol.layer.LayerProperty.EXTENT));
|
||||
};
|
||||
goog.exportProperty(
|
||||
ol.layer.Base.prototype,
|
||||
'getExtent',
|
||||
ol.layer.Base.prototype.getExtent);
|
||||
|
||||
|
||||
/**
|
||||
* @return {number|undefined} The maximum resolution of the layer.
|
||||
* @observable
|
||||
@@ -320,6 +339,22 @@ goog.exportProperty(
|
||||
ol.layer.Base.prototype.setHue);
|
||||
|
||||
|
||||
/**
|
||||
* Set the extent at which the layer is visible. If `undefined`, the layer
|
||||
* will be visible at all extents.
|
||||
* @param {ol.Extent|undefined} extent The extent of the layer.
|
||||
* @observable
|
||||
* @api
|
||||
*/
|
||||
ol.layer.Base.prototype.setExtent = function(extent) {
|
||||
this.set(ol.layer.LayerProperty.EXTENT, extent);
|
||||
};
|
||||
goog.exportProperty(
|
||||
ol.layer.Base.prototype,
|
||||
'setExtent',
|
||||
ol.layer.Base.prototype.setExtent);
|
||||
|
||||
|
||||
/**
|
||||
* @param {number|undefined} maxResolution The maximum resolution of the layer.
|
||||
* @observable
|
||||
|
||||
@@ -11,6 +11,7 @@ goog.require('ol.CollectionEvent');
|
||||
goog.require('ol.CollectionEventType');
|
||||
goog.require('ol.Object');
|
||||
goog.require('ol.ObjectEventType');
|
||||
goog.require('ol.extent');
|
||||
goog.require('ol.layer.Base');
|
||||
goog.require('ol.source.State');
|
||||
|
||||
@@ -211,6 +212,10 @@ ol.layer.Group.prototype.getLayerStatesArray = function(opt_states) {
|
||||
layerState.maxResolution, ownLayerState.maxResolution);
|
||||
layerState.minResolution = Math.max(
|
||||
layerState.minResolution, ownLayerState.minResolution);
|
||||
if (goog.isDef(ownLayerState.extent) && goog.isDef(layerState.extent)) {
|
||||
layerState.extent = ol.extent.getIntersection(
|
||||
layerState.extent, ownLayerState.extent);
|
||||
}
|
||||
}
|
||||
|
||||
return states;
|
||||
|
||||
@@ -7,6 +7,7 @@ goog.require('goog.vec.Mat4');
|
||||
goog.require('ol.ImageBase');
|
||||
goog.require('ol.ImageState');
|
||||
goog.require('ol.ViewHint');
|
||||
goog.require('ol.extent');
|
||||
goog.require('ol.layer.Image');
|
||||
goog.require('ol.renderer.Map');
|
||||
goog.require('ol.renderer.canvas.Layer');
|
||||
@@ -102,9 +103,16 @@ ol.renderer.canvas.ImageLayer.prototype.prepareFrame =
|
||||
|
||||
var hints = frameState.viewHints;
|
||||
|
||||
if (!hints[ol.ViewHint.ANIMATING] && !hints[ol.ViewHint.INTERACTING]) {
|
||||
var renderedExtent = frameState.extent;
|
||||
if (goog.isDef(layerState.extent)) {
|
||||
renderedExtent = ol.extent.getIntersection(
|
||||
renderedExtent, layerState.extent);
|
||||
}
|
||||
|
||||
if (!hints[ol.ViewHint.ANIMATING] && !hints[ol.ViewHint.INTERACTING] &&
|
||||
!ol.extent.isEmpty(renderedExtent)) {
|
||||
image = imageSource.getImage(
|
||||
frameState.extent, viewResolution, pixelRatio, viewState.projection);
|
||||
renderedExtent, viewResolution, pixelRatio, viewState.projection);
|
||||
if (!goog.isNull(image)) {
|
||||
var imageState = image.getState();
|
||||
if (imageState == ol.ImageState.IDLE) {
|
||||
|
||||
@@ -193,6 +193,11 @@ ol.renderer.canvas.TileLayer.prototype.prepareFrame =
|
||||
} else {
|
||||
extent = frameState.extent;
|
||||
}
|
||||
|
||||
if (goog.isDef(layerState.extent)) {
|
||||
extent = ol.extent.getIntersection(extent, layerState.extent);
|
||||
}
|
||||
|
||||
var tileRange = tileGrid.getTileRangeForExtentAndResolution(
|
||||
extent, tileResolution);
|
||||
|
||||
@@ -233,6 +238,11 @@ ol.renderer.canvas.TileLayer.prototype.prepareFrame =
|
||||
if (z != this.renderedCanvasZ_ ||
|
||||
!this.renderedCanvasTileRange_.containsTileRange(tileRange)) {
|
||||
this.renderedCanvasTileRange_ = null;
|
||||
// Due to limited layer extent, we may be rendering tiles on a small
|
||||
// portion of the canvas.
|
||||
if (z < this.renderedCanvasZ_) {
|
||||
this.context_.clearRect(0, 0, canvasWidth, canvasHeight);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -10,6 +10,7 @@ goog.require('ol.ImageBase');
|
||||
goog.require('ol.ImageState');
|
||||
goog.require('ol.ViewHint');
|
||||
goog.require('ol.dom');
|
||||
goog.require('ol.extent');
|
||||
goog.require('ol.layer.Image');
|
||||
goog.require('ol.renderer.dom.Layer');
|
||||
goog.require('ol.source.Image');
|
||||
@@ -89,8 +90,15 @@ ol.renderer.dom.ImageLayer.prototype.prepareFrame =
|
||||
|
||||
var hints = frameState.viewHints;
|
||||
|
||||
if (!hints[ol.ViewHint.ANIMATING] && !hints[ol.ViewHint.INTERACTING]) {
|
||||
var image_ = imageSource.getImage(frameState.extent, viewResolution,
|
||||
var renderedExtent = frameState.extent;
|
||||
if (goog.isDef(layerState.extent)) {
|
||||
renderedExtent = ol.extent.getIntersection(
|
||||
renderedExtent, layerState.extent);
|
||||
}
|
||||
|
||||
if (!hints[ol.ViewHint.ANIMATING] && !hints[ol.ViewHint.INTERACTING] &&
|
||||
!ol.extent.isEmpty(renderedExtent)) {
|
||||
var image_ = imageSource.getImage(renderedExtent, viewResolution,
|
||||
frameState.pixelRatio, viewState.projection);
|
||||
if (!goog.isNull(image_)) {
|
||||
var imageState = image_.getState();
|
||||
|
||||
@@ -109,6 +109,11 @@ ol.renderer.dom.TileLayer.prototype.prepareFrame =
|
||||
} else {
|
||||
extent = frameState.extent;
|
||||
}
|
||||
|
||||
if (goog.isDef(layerState.extent)) {
|
||||
extent = ol.extent.getIntersection(extent, layerState.extent);
|
||||
}
|
||||
|
||||
var tileRange = tileGrid.getTileRangeForExtentAndResolution(
|
||||
extent, tileResolution);
|
||||
|
||||
|
||||
@@ -10,6 +10,7 @@ goog.require('ol.Extent');
|
||||
goog.require('ol.ImageBase');
|
||||
goog.require('ol.ImageState');
|
||||
goog.require('ol.ViewHint');
|
||||
goog.require('ol.extent');
|
||||
goog.require('ol.layer.Image');
|
||||
goog.require('ol.renderer.webgl.Layer');
|
||||
goog.require('ol.source.Image');
|
||||
@@ -119,8 +120,14 @@ ol.renderer.webgl.ImageLayer.prototype.prepareFrame =
|
||||
|
||||
var hints = frameState.viewHints;
|
||||
|
||||
if (!hints[ol.ViewHint.ANIMATING] && !hints[ol.ViewHint.INTERACTING]) {
|
||||
var image_ = imageSource.getImage(frameState.extent, viewResolution,
|
||||
var renderedExtent = frameState.extent;
|
||||
if (goog.isDef(layerState.extent)) {
|
||||
renderedExtent = ol.extent.getIntersection(
|
||||
renderedExtent, layerState.extent);
|
||||
}
|
||||
if (!hints[ol.ViewHint.ANIMATING] && !hints[ol.ViewHint.INTERACTING] &&
|
||||
!ol.extent.isEmpty(renderedExtent)) {
|
||||
var image_ = imageSource.getImage(renderedExtent, viewResolution,
|
||||
frameState.pixelRatio, viewState.projection);
|
||||
if (!goog.isNull(image_)) {
|
||||
var imageState = image_.getState();
|
||||
|
||||
@@ -207,11 +207,18 @@ ol.renderer.webgl.TileLayer.prototype.prepareFrame =
|
||||
var allTilesLoaded = true;
|
||||
var tmpExtent = ol.extent.createEmpty();
|
||||
var tmpTileRange = new ol.TileRange(0, 0, 0, 0);
|
||||
var childTileRange, fullyLoaded, tile, tileState, x, y;
|
||||
var childTileRange, fullyLoaded, tile, tileState, x, y, tileExtent;
|
||||
for (x = tileRange.minX; x <= tileRange.maxX; ++x) {
|
||||
for (y = tileRange.minY; y <= tileRange.maxY; ++y) {
|
||||
|
||||
tile = tileSource.getTile(z, x, y, pixelRatio, projection);
|
||||
if (goog.isDef(layerState.extent)) {
|
||||
// ignore tiles outside layer extent
|
||||
tileExtent = tileGrid.getTileCoordExtent(tile.tileCoord, tmpExtent);
|
||||
if (!ol.extent.intersects(tileExtent, layerState.extent)) {
|
||||
continue;
|
||||
}
|
||||
}
|
||||
tileState = tile.getState();
|
||||
if (tileState == ol.TileState.LOADED) {
|
||||
if (mapRenderer.isTileTextureLoaded(tile)) {
|
||||
@@ -243,7 +250,7 @@ ol.renderer.webgl.TileLayer.prototype.prepareFrame =
|
||||
var zs = goog.array.map(goog.object.getKeys(tilesToDrawByZ), Number);
|
||||
goog.array.sort(zs);
|
||||
var u_tileOffset = goog.vec.Vec4.createFloat32();
|
||||
var i, ii, sx, sy, tileExtent, tileKey, tilesToDraw, tx, ty;
|
||||
var i, ii, sx, sy, tileKey, tilesToDraw, tx, ty;
|
||||
for (i = 0, ii = zs.length; i < ii; ++i) {
|
||||
tilesToDraw = tilesToDrawByZ[zs[i]];
|
||||
for (tileKey in tilesToDraw) {
|
||||
|
||||
@@ -89,7 +89,6 @@ ol.DebugTile_.prototype.getImage = function(opt_context) {
|
||||
ol.source.TileDebug = function(options) {
|
||||
|
||||
goog.base(this, {
|
||||
extent: options.extent,
|
||||
opaque: false,
|
||||
projection: options.projection,
|
||||
tileGrid: options.tileGrid
|
||||
|
||||
@@ -33,7 +33,6 @@ ol.source.FormatVector = function(options) {
|
||||
|
||||
goog.base(this, {
|
||||
attributions: options.attributions,
|
||||
extent: options.extent,
|
||||
logo: options.logo,
|
||||
projection: options.projection
|
||||
});
|
||||
|
||||
@@ -20,7 +20,6 @@ ol.source.ImageCanvas = function(options) {
|
||||
|
||||
goog.base(this, {
|
||||
attributions: options.attributions,
|
||||
extent: options.extent,
|
||||
logo: options.logo,
|
||||
projection: options.projection,
|
||||
resolutions: options.resolutions,
|
||||
|
||||
@@ -31,7 +31,6 @@ ol.source.ImageStatic = function(options) {
|
||||
|
||||
goog.base(this, {
|
||||
attributions: attributions,
|
||||
extent: options.extent,
|
||||
logo: options.logo,
|
||||
projection: projection,
|
||||
resolutions: [imageResolution]
|
||||
|
||||
@@ -75,7 +75,6 @@ ol.source.ImageVector = function(options) {
|
||||
goog.base(this, {
|
||||
attributions: options.attributions,
|
||||
canvasFunction: goog.bind(this.canvasFunctionInternal_, this),
|
||||
extent: options.extent,
|
||||
logo: options.logo,
|
||||
projection: options.projection,
|
||||
ratio: options.ratio,
|
||||
|
||||
@@ -31,7 +31,6 @@ ol.source.ImageWMS = function(opt_options) {
|
||||
|
||||
goog.base(this, {
|
||||
attributions: options.attributions,
|
||||
extent: options.extent,
|
||||
logo: options.logo,
|
||||
projection: options.projection,
|
||||
resolutions: options.resolutions
|
||||
|
||||
@@ -22,7 +22,6 @@ ol.source.KML = function(opt_options) {
|
||||
goog.base(this, {
|
||||
attributions: options.attributions,
|
||||
doc: options.doc,
|
||||
extent: options.extent,
|
||||
format: new ol.format.KML({
|
||||
defaultStyle: options.defaultStyle
|
||||
}),
|
||||
|
||||
@@ -21,7 +21,6 @@ goog.require('ol.source.Image');
|
||||
ol.source.MapGuide = function(options) {
|
||||
|
||||
goog.base(this, {
|
||||
extent: options.extent,
|
||||
projection: options.projection,
|
||||
resolutions: options.resolutions
|
||||
});
|
||||
|
||||
@@ -22,7 +22,6 @@ ol.source.OSMXML = function(opt_options) {
|
||||
goog.base(this, {
|
||||
attributions: options.attributions,
|
||||
doc: options.doc,
|
||||
extent: options.extent,
|
||||
format: new ol.format.OSMXML(),
|
||||
logo: options.logo,
|
||||
node: options.node,
|
||||
|
||||
@@ -23,7 +23,6 @@ ol.source.ServerVector = function(options) {
|
||||
|
||||
goog.base(this, {
|
||||
attributions: options.attributions,
|
||||
extent: options.extent,
|
||||
format: options.format,
|
||||
logo: options.logo,
|
||||
projection: options.projection
|
||||
|
||||
@@ -22,7 +22,6 @@ ol.source.State = {
|
||||
|
||||
/**
|
||||
* @typedef {{attributions: (Array.<ol.Attribution>|undefined),
|
||||
* extent: (ol.Extent|undefined),
|
||||
* logo: (string|olx.LogoOptions|undefined),
|
||||
* projection: ol.proj.ProjectionLike,
|
||||
* state: (ol.source.State|string|undefined)}}
|
||||
@@ -52,14 +51,6 @@ ol.source.Source = function(options) {
|
||||
*/
|
||||
this.projection_ = ol.proj.get(options.projection);
|
||||
|
||||
/**
|
||||
* @private
|
||||
* @type {ol.Extent}
|
||||
*/
|
||||
this.extent_ = goog.isDef(options.extent) ?
|
||||
options.extent : goog.isDef(options.projection) ?
|
||||
this.projection_.getExtent() : null;
|
||||
|
||||
/**
|
||||
* @private
|
||||
* @type {Array.<ol.Attribution>}
|
||||
@@ -106,14 +97,6 @@ ol.source.Source.prototype.getAttributions = function() {
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* @return {ol.Extent} Extent.
|
||||
*/
|
||||
ol.source.Source.prototype.getExtent = function() {
|
||||
return this.extent_;
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* @return {string|olx.LogoOptions|undefined} Logo.
|
||||
*/
|
||||
@@ -153,14 +136,6 @@ ol.source.Source.prototype.setAttributions = function(attributions) {
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* @param {ol.Extent} extent Extent.
|
||||
*/
|
||||
ol.source.Source.prototype.setExtent = function(extent) {
|
||||
this.extent_ = extent;
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* @param {string|olx.LogoOptions|undefined} logo Logo.
|
||||
*/
|
||||
|
||||
@@ -22,7 +22,6 @@ ol.source.StaticVector = function(options) {
|
||||
|
||||
goog.base(this, {
|
||||
attributions: options.attributions,
|
||||
extent: options.extent,
|
||||
format: options.format,
|
||||
logo: options.logo,
|
||||
projection: options.projection
|
||||
|
||||
@@ -59,7 +59,6 @@ ol.source.TileJSON.prototype.handleTileJSONResponse = function(tileJSON) {
|
||||
var transform = ol.proj.getTransformFromProjections(
|
||||
epsg4326Projection, this.getProjection());
|
||||
extent = ol.extent.applyTransform(tileJSON.bounds, transform);
|
||||
this.setExtent(extent);
|
||||
}
|
||||
|
||||
if (goog.isDef(tileJSON.scheme)) {
|
||||
|
||||
@@ -24,7 +24,6 @@ ol.source.TileVector = function(options) {
|
||||
|
||||
goog.base(this, {
|
||||
attributions: options.attributions,
|
||||
extent: options.extent,
|
||||
format: options.format,
|
||||
logo: options.logo,
|
||||
projection: options.projection
|
||||
@@ -48,9 +47,7 @@ ol.source.TileVector = function(options) {
|
||||
* @private
|
||||
* @type {ol.TileCoordTransformType}
|
||||
*/
|
||||
this.tileCoordTransform_ = tileGrid.createTileCoordTransform({
|
||||
extent: options.extent
|
||||
});
|
||||
this.tileCoordTransform_ = tileGrid.createTileCoordTransform();
|
||||
|
||||
/**
|
||||
* @private
|
||||
|
||||
@@ -40,7 +40,6 @@ ol.source.TileWMS = function(opt_options) {
|
||||
goog.base(this, {
|
||||
attributions: options.attributions,
|
||||
crossOrigin: options.crossOrigin,
|
||||
extent: options.extent,
|
||||
logo: options.logo,
|
||||
opaque: !transparent,
|
||||
projection: options.projection,
|
||||
@@ -394,12 +393,6 @@ ol.source.TileWMS.prototype.tileUrlFunction_ =
|
||||
tileResolution * gutter, tileExtent);
|
||||
}
|
||||
|
||||
var extent = this.getExtent();
|
||||
if (!goog.isNull(extent) && (!ol.extent.intersects(tileExtent, extent) ||
|
||||
ol.extent.touches(tileExtent, extent))) {
|
||||
return undefined;
|
||||
}
|
||||
|
||||
if (pixelRatio != 1) {
|
||||
tileSize = (tileSize * pixelRatio + 0.5) | 0;
|
||||
}
|
||||
|
||||
@@ -54,7 +54,6 @@ ol.source.Vector = function(opt_options) {
|
||||
|
||||
goog.base(this, {
|
||||
attributions: options.attributions,
|
||||
extent: options.extent,
|
||||
logo: options.logo,
|
||||
projection: options.projection,
|
||||
state: options.state
|
||||
@@ -332,6 +331,7 @@ ol.source.Vector.prototype.getClosestFeatureToCoordinate =
|
||||
|
||||
|
||||
/**
|
||||
* Get the extent of the features currently in the source.
|
||||
* @return {ol.Extent} Extent.
|
||||
* @api
|
||||
*/
|
||||
|
||||
@@ -154,13 +154,9 @@ ol.source.WMTS = function(options) {
|
||||
var x = tileCoord.x;
|
||||
var y = -tileCoord.y - 1;
|
||||
var tileExtent = tileGrid.getTileCoordExtent(tileCoord);
|
||||
var projectionExtent = projection.getExtent();
|
||||
var extent = goog.isDef(options.extent) ?
|
||||
options.extent : projectionExtent;
|
||||
var extent = projection.getExtent();
|
||||
|
||||
if (!goog.isNull(extent) && projection.isGlobal() &&
|
||||
extent[0] === projectionExtent[0] &&
|
||||
extent[2] === projectionExtent[2]) {
|
||||
if (!goog.isNull(extent) && projection.isGlobal()) {
|
||||
var numCols = Math.ceil(
|
||||
ol.extent.getWidth(extent) /
|
||||
ol.extent.getWidth(tileExtent));
|
||||
@@ -181,7 +177,6 @@ ol.source.WMTS = function(options) {
|
||||
goog.base(this, {
|
||||
attributions: options.attributions,
|
||||
crossOrigin: options.crossOrigin,
|
||||
extent: options.extent,
|
||||
logo: options.logo,
|
||||
projection: options.projection,
|
||||
tileGrid: tileGrid,
|
||||
|
||||
@@ -30,7 +30,6 @@ ol.source.XYZ = function(options) {
|
||||
goog.base(this, {
|
||||
attributions: options.attributions,
|
||||
crossOrigin: options.crossOrigin,
|
||||
extent: options.extent,
|
||||
logo: options.logo,
|
||||
projection: projection,
|
||||
tileGrid: tileGrid,
|
||||
@@ -44,7 +43,6 @@ ol.source.XYZ = function(options) {
|
||||
* @type {ol.TileCoordTransformType}
|
||||
*/
|
||||
this.tileCoordTransform_ = tileGrid.createTileCoordTransform({
|
||||
extent: options.extent,
|
||||
wrapX: options.wrapX
|
||||
});
|
||||
|
||||
|
||||
@@ -24,6 +24,30 @@ describe('ol.extent', function() {
|
||||
|
||||
});
|
||||
|
||||
describe('getIntersection()', function() {
|
||||
it('returns the intersection of two extents', function() {
|
||||
var world = [-180, -90, 180, 90];
|
||||
var north = [-180, 0, 180, 90];
|
||||
var farNorth = [-180, 45, 180, 90];
|
||||
var east = [0, -90, 180, 90];
|
||||
var farEast = [90, -90, 180, 90];
|
||||
var south = [-180, -90, 180, 0];
|
||||
var farSouth = [-180, -90, 180, -45];
|
||||
var west = [-180, -90, 0, 90];
|
||||
var farWest = [-180, -90, -90, 90];
|
||||
var none = ol.extent.createEmpty();
|
||||
expect(ol.extent.getIntersection(world, none)).to.eql(none);
|
||||
expect(ol.extent.getIntersection(world, north)).to.eql(north);
|
||||
expect(ol.extent.getIntersection(world, east)).to.eql(east);
|
||||
expect(ol.extent.getIntersection(world, south)).to.eql(south);
|
||||
expect(ol.extent.getIntersection(world, west)).to.eql(west);
|
||||
expect(ol.extent.getIntersection(farEast, farWest)).to.eql(none);
|
||||
expect(ol.extent.getIntersection(farNorth, farSouth)).to.eql(none);
|
||||
expect(ol.extent.getIntersection(north, west)).to.eql([-180, 0, 0, 90]);
|
||||
expect(ol.extent.getIntersection(east, south)).to.eql([0, -90, 180, 0]);
|
||||
});
|
||||
});
|
||||
|
||||
describe('containsCoordinate', function() {
|
||||
|
||||
describe('positive', function() {
|
||||
|
||||
@@ -56,6 +56,7 @@ describe('ol.layer.Layer', function() {
|
||||
saturation: 1,
|
||||
visible: true,
|
||||
sourceState: ol.source.State.READY,
|
||||
extent: undefined,
|
||||
maxResolution: Infinity,
|
||||
minResolution: 0
|
||||
});
|
||||
@@ -99,6 +100,7 @@ describe('ol.layer.Layer', function() {
|
||||
saturation: 5,
|
||||
visible: false,
|
||||
sourceState: ol.source.State.READY,
|
||||
extent: undefined,
|
||||
maxResolution: 500,
|
||||
minResolution: 0.25
|
||||
});
|
||||
@@ -191,6 +193,7 @@ describe('ol.layer.Layer', function() {
|
||||
saturation: 0.3,
|
||||
visible: false,
|
||||
sourceState: ol.source.State.READY,
|
||||
extent: undefined,
|
||||
maxResolution: 500,
|
||||
minResolution: 0.25
|
||||
});
|
||||
@@ -212,6 +215,7 @@ describe('ol.layer.Layer', function() {
|
||||
saturation: 0,
|
||||
visible: false,
|
||||
sourceState: ol.source.State.READY,
|
||||
extent: undefined,
|
||||
maxResolution: Infinity,
|
||||
minResolution: 0
|
||||
});
|
||||
@@ -231,6 +235,7 @@ describe('ol.layer.Layer', function() {
|
||||
saturation: 42,
|
||||
visible: true,
|
||||
sourceState: ol.source.State.READY,
|
||||
extent: undefined,
|
||||
maxResolution: Infinity,
|
||||
minResolution: 0
|
||||
});
|
||||
|
||||
@@ -52,6 +52,7 @@ describe('ol.layer.Group', function() {
|
||||
saturation: 1,
|
||||
visible: true,
|
||||
sourceState: ol.source.State.READY,
|
||||
extent: undefined,
|
||||
maxResolution: Infinity,
|
||||
minResolution: 0
|
||||
});
|
||||
@@ -179,6 +180,7 @@ describe('ol.layer.Group', function() {
|
||||
saturation: 5,
|
||||
visible: false,
|
||||
sourceState: ol.source.State.READY,
|
||||
extent: undefined,
|
||||
maxResolution: 500,
|
||||
minResolution: 0.25
|
||||
});
|
||||
@@ -190,6 +192,56 @@ describe('ol.layer.Group', function() {
|
||||
goog.dispose(layerGroup);
|
||||
});
|
||||
|
||||
it('accepts an extent option', function() {
|
||||
var layer = new ol.layer.Layer({
|
||||
source: new ol.source.Source({
|
||||
projection: 'EPSG:4326'
|
||||
})
|
||||
});
|
||||
|
||||
var groupExtent = [-10, -5, 10, 5];
|
||||
var layerGroup = new ol.layer.Group({
|
||||
layers: [layer],
|
||||
brightness: 0.5,
|
||||
contrast: 10,
|
||||
hue: 180,
|
||||
opacity: 0.5,
|
||||
saturation: 5,
|
||||
visible: false,
|
||||
extent: groupExtent,
|
||||
maxResolution: 500,
|
||||
minResolution: 0.25
|
||||
});
|
||||
|
||||
expect(layerGroup.getBrightness()).to.be(0.5);
|
||||
expect(layerGroup.getContrast()).to.be(10);
|
||||
expect(layerGroup.getHue()).to.be(180);
|
||||
expect(layerGroup.getOpacity()).to.be(0.5);
|
||||
expect(layerGroup.getSaturation()).to.be(5);
|
||||
expect(layerGroup.getVisible()).to.be(false);
|
||||
expect(layerGroup.getExtent()).to.eql(groupExtent);
|
||||
expect(layerGroup.getMaxResolution()).to.be(500);
|
||||
expect(layerGroup.getMinResolution()).to.be(0.25);
|
||||
expect(layerGroup.getLayerState()).to.eql({
|
||||
layer: layerGroup,
|
||||
brightness: 0.5,
|
||||
contrast: 10,
|
||||
hue: 180,
|
||||
opacity: 0.5,
|
||||
saturation: 5,
|
||||
visible: false,
|
||||
sourceState: ol.source.State.READY,
|
||||
extent: groupExtent,
|
||||
maxResolution: 500,
|
||||
minResolution: 0.25
|
||||
});
|
||||
expect(layerGroup.getLayers()).to.be.a(ol.Collection);
|
||||
expect(layerGroup.getLayers().getLength()).to.be(1);
|
||||
expect(layerGroup.getLayers().item(0)).to.be(layer);
|
||||
|
||||
goog.dispose(layer);
|
||||
goog.dispose(layerGroup);
|
||||
});
|
||||
});
|
||||
|
||||
describe('#getLayerState', function() {
|
||||
@@ -211,6 +263,8 @@ describe('ol.layer.Group', function() {
|
||||
layerGroup.setOpacity(0.3);
|
||||
layerGroup.setSaturation(0.3);
|
||||
layerGroup.setVisible(false);
|
||||
var groupExtent = [-100, 50, 100, 50];
|
||||
layerGroup.setExtent(groupExtent);
|
||||
layerGroup.setMaxResolution(500);
|
||||
layerGroup.setMinResolution(0.25);
|
||||
expect(layerGroup.getLayerState()).to.eql({
|
||||
@@ -222,6 +276,7 @@ describe('ol.layer.Group', function() {
|
||||
saturation: 0.3,
|
||||
visible: false,
|
||||
sourceState: ol.source.State.READY,
|
||||
extent: groupExtent,
|
||||
maxResolution: 500,
|
||||
minResolution: 0.25
|
||||
});
|
||||
@@ -243,6 +298,7 @@ describe('ol.layer.Group', function() {
|
||||
saturation: 0,
|
||||
visible: false,
|
||||
sourceState: ol.source.State.READY,
|
||||
extent: undefined,
|
||||
maxResolution: Infinity,
|
||||
minResolution: 0
|
||||
});
|
||||
@@ -262,6 +318,7 @@ describe('ol.layer.Group', function() {
|
||||
saturation: 42,
|
||||
visible: true,
|
||||
sourceState: ol.source.State.READY,
|
||||
extent: undefined,
|
||||
maxResolution: Infinity,
|
||||
minResolution: 0
|
||||
});
|
||||
@@ -384,6 +441,7 @@ describe('ol.layer.Group', function() {
|
||||
saturation: 25,
|
||||
visible: false,
|
||||
sourceState: ol.source.State.READY,
|
||||
extent: undefined,
|
||||
maxResolution: 150,
|
||||
minResolution: 0.25
|
||||
});
|
||||
|
||||
@@ -20,7 +20,8 @@ describe('ol.source.Tile', function() {
|
||||
|
||||
var loadedTilesByZ = {};
|
||||
var grid = source.getTileGrid();
|
||||
var range = grid.getTileRangeForExtentAndZ(source.getExtent(), 3);
|
||||
var extent = [-180, -180, 180, 180];
|
||||
var range = grid.getTileRangeForExtentAndZ(extent, 3);
|
||||
|
||||
function getTileIfLoaded(z, x, y) {
|
||||
var tile = source.getTile(z, x, y);
|
||||
@@ -42,7 +43,8 @@ describe('ol.source.Tile', function() {
|
||||
|
||||
var loadedTilesByZ = {};
|
||||
var grid = source.getTileGrid();
|
||||
var range = grid.getTileRangeForExtentAndZ(source.getExtent(), 0);
|
||||
var extent = [-180, -180, 180, 180];
|
||||
var range = grid.getTileRangeForExtentAndZ(extent, 0);
|
||||
|
||||
function getTileIfLoaded(z, x, y) {
|
||||
var tile = source.getTile(z, x, y);
|
||||
@@ -66,7 +68,8 @@ describe('ol.source.Tile', function() {
|
||||
|
||||
var loadedTilesByZ = {};
|
||||
var grid = source.getTileGrid();
|
||||
var range = grid.getTileRangeForExtentAndZ(source.getExtent(), 1);
|
||||
var extent = [-180, -180, 180, 180];
|
||||
var range = grid.getTileRangeForExtentAndZ(extent, 1);
|
||||
|
||||
function getTileIfLoaded(z, x, y) {
|
||||
var tile = source.getTile(z, x, y);
|
||||
@@ -92,7 +95,8 @@ describe('ol.source.Tile', function() {
|
||||
|
||||
var loadedTilesByZ = {};
|
||||
var grid = source.getTileGrid();
|
||||
var range = grid.getTileRangeForExtentAndZ(source.getExtent(), 1);
|
||||
var extent = [-180, -180, 180, 180];
|
||||
var range = grid.getTileRangeForExtentAndZ(extent, 1);
|
||||
function getTileIfLoaded(z, x, y) {
|
||||
var tile = source.getTile(z, x, y);
|
||||
return (!goog.isNull(tile) && tile.getState() === ol.TileState.LOADED) ?
|
||||
@@ -117,7 +121,8 @@ describe('ol.source.Tile', function() {
|
||||
}
|
||||
};
|
||||
var grid = source.getTileGrid();
|
||||
var range = grid.getTileRangeForExtentAndZ(source.getExtent(), 1);
|
||||
var extent = [-180, -180, 180, 180];
|
||||
var range = grid.getTileRangeForExtentAndZ(extent, 1);
|
||||
|
||||
function getTileIfLoaded(z, x, y) {
|
||||
var tile = source.getTile(z, x, y);
|
||||
@@ -140,7 +145,8 @@ describe('ol.source.Tile', function() {
|
||||
|
||||
var loadedTilesByZ = {};
|
||||
var grid = source.getTileGrid();
|
||||
var range = grid.getTileRangeForExtentAndZ(source.getExtent(), 1);
|
||||
var extent = [-180, -180, 180, 180];
|
||||
var range = grid.getTileRangeForExtentAndZ(extent, 1);
|
||||
|
||||
function getTileIfLoaded(z, x, y) {
|
||||
var tile = source.getTile(z, x, y);
|
||||
@@ -165,7 +171,8 @@ describe('ol.source.Tile', function() {
|
||||
}
|
||||
};
|
||||
var grid = source.getTileGrid();
|
||||
var range = grid.getTileRangeForExtentAndZ(source.getExtent(), 1);
|
||||
var extent = [-180, -180, 180, 180];
|
||||
var range = grid.getTileRangeForExtentAndZ(extent, 1);
|
||||
|
||||
function getTileIfLoaded(z, x, y) {
|
||||
var tile = source.getTile(z, x, y);
|
||||
@@ -192,16 +199,13 @@ describe('ol.source.Tile', function() {
|
||||
* @param {Object.<string, boolean>} loaded Lookup of already loaded tiles.
|
||||
*/
|
||||
ol.test.source.TileMock = function(loaded) {
|
||||
var extent = [-180, -180, 180, 180];
|
||||
var tileGrid = new ol.tilegrid.TileGrid({
|
||||
resolutions: [360 / 256, 180 / 256, 90 / 256, 45 / 256],
|
||||
extent: extent,
|
||||
origin: [-180, -180],
|
||||
tileSize: 256
|
||||
});
|
||||
|
||||
goog.base(this, {
|
||||
extent: extent,
|
||||
projection: ol.proj.get('EPSG:4326'),
|
||||
tileGrid: tileGrid
|
||||
});
|
||||
|
||||
@@ -126,22 +126,6 @@ describe('ol.source.TileWMS', function() {
|
||||
expect(queryData.get('BBOX')).to.be('-45,-45,0,0');
|
||||
});
|
||||
|
||||
it('does not return a tile if it touches layers extent', function() {
|
||||
options.extent = [-80, -40, -45, -10];
|
||||
var source = new ol.source.TileWMS(options);
|
||||
var tileCoord = new ol.TileCoord(3, 3, 1);
|
||||
var url = source.tileUrlFunction(tileCoord, 1, ol.proj.get('EPSG:4326'));
|
||||
expect(url).to.be(undefined);
|
||||
});
|
||||
|
||||
it('does not return a tile outside of layers extent', function() {
|
||||
options.extent = [-80, -40, -45, -10];
|
||||
var source = new ol.source.TileWMS(options);
|
||||
var tileCoord = new ol.TileCoord(3, 4, 2);
|
||||
var url = source.tileUrlFunction(tileCoord, 1, ol.proj.get('EPSG:4326'));
|
||||
expect(url).to.be(undefined);
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
describe('#getGetFeatureInfo', function() {
|
||||
|
||||
Reference in New Issue
Block a user