Releases: openlayers/openlayers
v3.8.1
v3.8.0
Summary
The v3.8.0 release includes features and fixes from 33 pull requests since v3.7.0. While summer vacations have slowed the pace of development a bit this month, there are some nice improvements in this release. See the complete list below for details.
Note - Please see the 3.8.1 patch release for downloading release artifacts.
New features and fixes
- #3957 - Properly handle vertex deletion with multiple features. (@tschaub)
- #3954 - Remove ol.control.Control.bindMouseOutFocusOutBlur function. (@fredj)
- #3214 - Pixel manipulation with raster sources. (@tschaub)
- #3946 - Fix vertex deletion for Modify interaction on mobile devices. (@Turbo87)
- #3910 - Do not provide an AMD environment to ol.ext modules. (@ahocevar)
- #3934 - Fix
drawstart
anddrawend
events when drawing a point (@fredj) - #3774 - Measure tooltips touchdevice (@pgiraud)
- #3949 - Remove count argument from
called
function (@fredj) - #3950 - Remove reference to vbarray.js (@elemoine)
- #3947 - Clarify documentation of Image source ratio option. (@alvinlindstam)
- #3920 - Remove use_types_for_optimization from custom build tutorial. (@probins)
- #3922 - Document {?-?} pattern in expandUrl (@probins)
- #3921 - Cache node_modules on Travis. (@bjornharrtell)
- #3942 - Fix WMTS TileMatrixSet lookup by SRS identifier (@ahocevar)
- #3945 - Simplify icon example and show popup at clicked position (@ahocevar)
- #3930 - Use goog.functions.identity instead of goog.identityFunction (@fredj)
- #3929 - Expand description for XYZ source (@probins)
- #3933 - Snap center to pixel to avoid floating point issues (@ahocevar)
- #3932 - SnapOptions: Fix typo in pixelTolerance JSDoc (@Turbo87)
- #3931 - Remove unused htmlparser2 package (@fredj)
- #3912 - Fix the event type fired by goog.fx.Dragger (@fredj)
- #3871 - Document change events properly (@ahocevar)
- #3906 - Clear features properly when there is no spatial index (@ahocevar)
- #3896 - Fire WebGL precompose event in same sequence as other renderers (@ahocevar)
- #3359 - Enable deep clone of MultiPolygon. (@Kenny806)
- #3895 - Rework the tile queue for multiple queues. (@aisaacs)
- #3894 - Install Python dependencies without sudo. (@tschaub)
- #3824 - Improve docs for interaction.Select. (@probins)
- #3884 - Provide a debug loader for the library. (@tschaub)
- #3883 - Ignore layer filter for unmanaged layers (@ahocevar)
- #3859 - Add in crossOrigin option (@llambanna)
- #3873 - Correct minor typo in modifyinteraction (@probins)
- #3872 - Correct event notations in ol.Feature (@probins)
v3.7.0
v3.7.0
Summary
The v3.7.0 release includes features and fixes from 43 pull requests since v3.6.0. To simplify the code base, there were some changes to "experimental" features. Please follow the upgrade notes to make your applications work with the latest release.
Upgrade notes
Removal of ol.FeatureOverlay
Instead of an ol.FeatureOverlay
, we now use an ol.layer.Vector
with an
ol.source.Vector
. If you previously had:
var featureOverlay = new ol.FeatureOverlay({
map: map,
style: overlayStyle
});
featureOverlay.addFeature(feature);
featureOverlay.removeFeature(feature);
var collection = featureOverlay.getFeatures();
you will have to change this to:
var collection = new ol.Collection();
var featureOverlay = new ol.layer.Vector({
map: map,
source: new ol.source.Vector({
features: collection,
useSpatialIndex: false // optional, might improve performance
}),
style: overlayStyle,
updateWhileAnimating: true, // optional, for instant visual feedback
updateWhileInteracting: true // optional, for instant visual feedback
});
featureOverlay.getSource().addFeature(feature);
featureOverlay.getSource().removeFeature(feature);
With the removal of ol.FeatureOverlay
, zIndex
symbolizer properties of overlays are no longer stacked per map, but per layer/overlay. If you previously had multiple feature overlays where you controlled the rendering order of features by using zIndex
symbolizer properties, you can now achieve the same rendering order only if all overlay features are on the same layer.
Note that ol.FeatureOverlay#getFeatures()
returned an {ol.Collection.<ol.Feature>}
, whereas ol.source.Vector#getFeatures()
returns an {Array.<ol.Feature>}
.
ol.TileCoord
changes
Until now, the API exposed two different types of ol.TileCoord
tile coordinates: internal ones that increase left to right and upward, and transformed ones that may increase downward, as defined by a transform function on the tile grid. With this change, the API now only exposes tile coordinates that increase left to right and upward.
Previously, tile grids created by OpenLayers either had their origin at the top-left or at the bottom-left corner of the extent. To make it easier for application developers to transform tile coordinates to the common XYZ tiling scheme, all tile grids that OpenLayers creates internally have their origin now at the top-left corner of the extent.
This change affects applications that configure a custom tileUrlFunction
for an ol.source.Tile
. Previously, the tileUrlFunction
was called with rather unpredictable tile coordinates, depending on whether a tile coordinate transform took place before calling the tileUrlFunction
. Now it is always called with OpenLayers tile coordinates. To transform these into the common XYZ tiling scheme, a custom tileUrlFunction
has to change the y
value (tile row) of the ol.TileCoord
:
function tileUrlFunction = function(tileCoord, pixelRatio, projection) {
var urlTemplate = '{z}/{x}/{y}';
return urlTemplate
.replace('{z}', tileCoord[0].toString())
.replace('{x}', tileCoord[1].toString())
.replace('{y}', (-tileCoord[2] - 1).toString());
}
The ol.tilegrid.TileGrid#createTileCoordTransform()
function which could be used to get the tile grid's tile coordinate transform function has been removed. This function was confusing and should no longer be needed now that application developers get tile coordinates in a known layout.
The code snippets below show how your application code needs to be changed:
Old application code (with ol.tilegrid.TileGrid#createTileCoordTransform()
):
var transform = source.getTileGrid().createTileCoordTransform();
var tileUrlFunction = function(tileCoord, pixelRatio, projection) {
tileCoord = transform(tileCoord, projection);
return 'http://mytiles.com/' +
tileCoord[0] + '/' + tileCoord[1] + '/' + tileCoord[2] + '.png';
};
Old application code (with custom y
transform):
var tileUrlFunction = function(tileCoord, pixelRatio, projection) {
var z = tileCoord[0];
var yFromBottom = tileCoord[2];
var resolution = tileGrid.getResolution(z);
var tileHeight = ol.size.toSize(tileSize)[1];
var matrixHeight =
Math.floor(ol.extent.getHeight(extent) / tileHeight / resolution);
return 'http://mytiles.com/' +
tileCoord[0] + '/' + tileCoord[1] + '/' +
(matrixHeight - yFromBottom - 1) + '.png';
};
New application code (simple -y - 1 transform):
var tileUrlFunction = function(tileCoord, pixelRatio, projection) {
return 'http://mytiles.com/' +
tileCoord[0] + '/' + tileCoord[1] + '/' + (-tileCoord[2] - 1) + '.png';
};
Removal of ol.tilegrid.Zoomify
The replacement of ol.tilegrid.Zoomify
is a plain ol.tilegrid.TileGrid
, configured with extent
, origin
and resolutions
. If the size
passed to the ol.source.Zoomify
source is [width, height]
, then the extent for the tile grid will be [0, -height, width, 0]
, and the origin will be [0, 0]
.
Replace ol.View.fitExtent()
and ol.View.fitGeometry()
with ol.View.fit()
- This combines two previously distinct functions into one more flexible call which takes either a geometry or an extent.
- Rename all calls to
fitExtent
andfitGeometry
tofit
.
Change to ol.interaction.Modify
When single clicking a line or boundary within the pixelTolerance
, a vertex is now created.
New features and fixes
- #3867 - Do not require projection extent for x-wrapping tile sources (@ahocevar)
- #3635 - Create vertex on boundary single click (@bjornharrtell)
- #3806 - Do not clip canvas for vector layers when wrapping the world (@ahocevar)
- #3461 - High level Modify interaction events (@bjornharrtell)
- #3865 - ol.View#fit() (@bartvde)
- #3864 - Check projection.canWrapX() before wrapping tiles (@klokantech)
- #3863 - Handle CDATA in attribute parsing for GML format (@nhambletCCRI)
- #3860 - Update example layout. (@tschaub)
- #3861 - Don't force 'dom' renderer (@openlayers)
- #3855 - Adding an example with WMTS tiles from IGN Geoportail (@pgiraud)
- #3856 - ol.source.TileVector(): bind success function of tileLoadFunction to source (@plepe)
- #3848 - Check for exports before define. (@tschaub)
- #3845 - Prevent null array to be passed to an ol.Collection (@fredj)
- #3849 - Pad min. and sec. with leading zeros in DMS notation (@pgiraud)
- #3842 - Adding a feature-animation example (@pgiraud)
- #3833 - Enable use of custom XHR loader for TileVector sources (@bjornharrtell)
- #3834 - ArcGIS tiled example broken in Chrome (@bartvde)
- #3829 - incorrect assert message (@kzr-pzr)
- #3828 - Fix typo in upgrade notes (@ahocevar)
- #3826 - Allow custom tileGrid in ol.source.XYZ (@klokantech)
- #3815 - Simplify tilegrid API and internals (@ahocevar)
- #3820 - Make unmanaged vector layers behave more like ol.FeatureOverlay (@ahocevar)
- #3822 - Correct docs for updateWhileInteracting (@probins)
- #3818 - Make geometry.transform api stable again. (@probins)
- #3801 - Respect the tile grid's extent in ol.source.TileVector (@ahocevar)
- #3810 - Improve TileGrid documentation and examples (@ahocevar)
- #3808 - Correct typo in OverlayOptions (@probins)
- #3766 - Add a clickTolerance option to the Draw interaction (@elemoine)
- #3804 - Remove sentence that was only meant for WMTS tile grids (@ahocevar)
- #3800 - Remove further references to FeatureOverlay (@probins)
- #3780 - Only expose transformed tile coordinates to the API ([@ahocevar](https://github.com/ahoceva...
v3.6.0
Summary
The v3.6.0 release includes features and fixes from 40 pull requests since v3.5.0. To simplify the code base, there were some changes to "experimental" features. Please follow the upgrade notes to make your applications work with the latest release.
Upgrade notes
ol.interaction.Draw
changes
- The
minPointsPerRing
config option has been renamed tominPoints
. It is now also available for linestring drawing, not only for polygons. - The
ol.DrawEvent
andol.DrawEventType
types were renamed tool.interaction.DrawEvent
andol.interaction.DrawEventType
. This has an impact on your code only if your code is compiled together with ol3.
ol.tilegrid
changes
- The
ol.tilegrid.XYZ
constructor has been replaced by a staticol.tilegrid.createXYZ()
function. Theol.tilegrid.createXYZ()
function takes the same arguments as the previousol.tilegrid.XYZ
constructor, but returns anol.tilegrid.TileGrid
instance. - The internal tile coordinate scheme for XYZ sources has been changed. Previously, the
y
of tile coordinates was transformed to the coordinates used by sources by calculating-y-1
. Now, it is transformed by calculatingheight-y-1
, where height is the number of rows of the tile grid at the zoom level of the tile coordinate. - The
widths
constructor option ofol.tilegrid.TileGrid
and subclasses is no longer available, and it is no longer necessary to get proper wrapping at the 180° meridian. However, forol.tilegrid.WMTS
, there is a new optionsizes
, where each entry is anol.Size
with thewidth
('TileMatrixWidth' in WMTS capabilities) as first and theheight
('TileMatrixHeight') as second entry of the array. For other tile grids, users can
now specify anextent
instead ofwidths
. These settings are used to restrict the range of tiles that sources will request. - For
ol.source.TileWMS
, the default value ofwarpX
used to beundefined
, meaning that WMS requests with out-of-extent tile BBOXes would be sent. NowwrapX
can only betrue
orfalse
, and the new default istrue
. No application code changes should be required, but the resulting WMS requests for out-of-extent tiles will no longer use out-of-extent BBOXes, but ones that are shifted to real-world coordinates.
New features and fixes
- #3764 - Add tests and implementation for intersectsExtent (ol.geom.Geometry) (@alvinlindstam)
- #3757 - Add mapBrowserEvent as a member of ol.SelectEvent (@bjornharrtell)
- #3759 - Mark tilegrid.createTileCoordTransform() @api (@gberaudo)
- #3747 - Make tileCoordTransform a member again (@ahocevar)
- #3751 - Do not rely on remote services for tests (@ahocevar)
- #3749 - Fix typo in API docs (@marcjansen)
- #3739 - Simplify detection of scientific notation in WKT format (@marcjansen)
- #3741 - Enhance docs of arguments and return values of callbacks / filters (@marcjansen)
- #3740 - Add @fires to select interaction (@probins)
- #3738 - Improve doucmentation for ol.TileUrlFunctionType (@ahocevar)
- #3736 - Fix invalid example HTML markup (@fredj)
- #3735 - Snap example: remove featureoverlay from tags (@probins)
- #3732 - Add a method to bind button bluring on mouseout/focusout (@marcjansen)
- #3659 - Revert "Implement ol.renderer.Layer#forEachFeatureAtCoordinate" (@fredj)
- #3683 - Improve Map docs for layers and layergroups (@probins)
- #3720 - Add missing goog.provides in drawinteraction.js (@elemoine)
- #3725 - Document default value for olx.interaction.ModifyOptions#pixelTolerance (@fredj)
- #3722 - Use the correct TileCoord transform function (@ahocevar)
- #3692 - Updates for building on Windows using Cygwin. (@bill-chadwick)
- #3718 - Add a assertion for renderOrder (@tsauerwein)
- #3711 - Fix and test ol.color.blend (@marcjansen)
- #3673 - More control over ol.interaction.Draw, to allow e.g. square drawing (@ahocevar)
- #3710 - Add more tests for ol.extent (@marcjansen)
- #3709 - vector-wfs example does not work in JSFiddle (@bartvde)
- #3699 - Add support for scientific notation to WKT format (@marcjansen)
- #3696 - Add an example for various blend modes (@marcjansen)
- #3697 - Use a valid SPDX license expression (@marcjansen)
- #3694 - Correct typo in upgrade-notes (@probins)
- #3693 - Fix ol.extent.containsExtent documentation (@tremby)
- #3689 - Fix WMTS.optionsFromCapabilities if no OperationsMetadata section (@probins)
- #3688 - Add two missing properties to extern of WebGLContextAttributes (@fredj)
- #3682 - Add a note about using the collection in addLayer (@bartvde)
- #3649 - More specific regex in serve.js (@elemoine)
- #3677 - Add metadata to examples, (@tschaub)
- #3672 - Add link to FAQ-document and fix internal links (@marcjansen)
- #3665 - Add proj4js and projection definition files to example resources (@marcjansen)
- #3662 - Clarify docs for renderBuffer option (@tsauerwein)
- #3664 - Link to download page. (@tschaub)
- #3639 - Add extent support to ol.tilegrid.TileGrid (@ahocevar)
- #3663 - Readme should not include the version number. (@tschaub)
- #3637 - Implement ol.renderer.Layer#forEachFeatureAtCoordinate (@fredj)
v3.5.0
v3.5.0
Summary
The 3.5.0 release includes features and fixes from a whopping 129 pull requests since 3.4.0. This release removes a number of "experimental" features from the API, so take a close look at the notes below when upgrading.
Upgrade notes
ol.Object
and bindTo
-
The following experimental methods have been removed from
ol.Object
:bindTo
,unbind
, andunbindAll
. If you want to get notification aboutol.Object
property changes, you can listen for the'propertychange'
event (e.g.object.on('propertychange', listener)
). Two-way binding can be set up at the application level using property change listeners. See #3472 for details on the change. -
The experimental
ol.dom.Input
component has been removed. If you need to synchronize the state of a dom Input element with anol.Object
, this can be accomplished using listeners for change events. For example, you might bind the state of a checkbox type input with a layer's visibility like this:var layer = new ol.layer.Tile(); var checkbox = document.querySelector('#checkbox'); checkbox.addEventListener('change', function() { var checked = this.checked; if (checked !== layer.getVisible()) { layer.setVisible(checked); } }); layer.on('change:visible', function() { var visible = this.getVisible(); if (visible !== checkbox.checked) { checkbox.checked = visible; } });
New Vector API
-
The following experimental vector classes have been removed:
ol.source.GeoJSON
,ol.source.GML
,ol.source.GPX
,ol.source.IGC
,ol.source.KML
,ol.source.OSMXML
, andol.source.TopoJSON
. You now will useol.source.Vector
instead.For example, if you used
ol.source.GeoJSON
as follows:var source = new ol.source.GeoJSON({ url: 'features.json', projection: 'EPSG:3857' });
you will need to change your code to:
var source = new ol.source.Vector({ url: 'features.json', format: new ol.format.GeoJSON() });
See http://openlayers.org/en/v3.5.0/examples/vector-layer.html for a real example.
Note that you no longer need to set a
projection
on the source!Previously the vector data was loaded at source construction time, and, if the data projection and the source projection were not the same, the vector data was transformed to the source projection before being inserted (as features) into the source.
The vector data is now loaded at render time, when the view projection is known. And the vector data is transformed to the view projection if the data projection and the source projection are not the same.
If you still want to "eagerly" load the source you will use something like this:
var source = new ol.source.Vector(); $.ajax('features.json').then(function(response) { var geojsonFormat = new ol.format.GeoJSON(); var features = geojsonFormat.readFeatures(response, {featureProjection: 'EPSG:3857'}); source.addFeatures(features); });
The above code uses jQuery to send an Ajax request, but you can obviously use any Ajax library.
See http://openlayers.org/en/v3.5.0/examples/igc.html for a real example.
-
Note about KML
If you used
ol.source.KML
'sextractStyles
ordefaultStyle
options, you will now have to set these options onol.format.KML
instead. For example, if you used:var source = new ol.source.KML({ url: 'features.kml', extractStyles: false, projection: 'EPSG:3857' });
you will now use:
var source = new ol.source.Vector({ url: 'features.kml', format: new ol.format.KML({ extractStyles: false }) });
-
The
ol.source.ServerVector
class has been removed. If you used it, for example as follows:var source = new ol.source.ServerVector({ format: new ol.format.GeoJSON(), loader: function(extent, resolution, projection) { var url = …; $.ajax(url).then(function(response) { source.addFeatures(source.readFeatures(response)); }); }, strategy: ol.loadingstrategy.bbox, projection: 'EPSG:3857' });
you will need to change your code to:
var source = new ol.source.Vector({ loader: function(extent, resolution, projection) { var url = …; $.ajax(url).then(function(response) { var format = new ol.format.GeoJSON(); var features = format.readFeatures(response, {featureProjection: projection}); source.addFeatures(features); }); }, strategy: ol.loadingstrategy.bbox });
See http://openlayers.org/en/v3.5.0/examples/vector-osm.html for a real example.
-
The experimental
ol.loadingstrategy.createTile
function has been renamed tool.loadingstrategy.tile
. The signature of the function hasn't changed. See http://openlayers.org/en/v3.5.0/examples/vector-osm.html for an example.
Change to ol.style.Icon
- When manually loading an image for
ol.style.Icon
, the image size should now be set
with theimgSize
option and not withsize
.size
is supposed to be used for the
size of a sub-rectangle in an image sprite.
Support for non-square tiles
The return value of ol.tilegrid.TileGrid#getTileSize()
will now be an ol.Size
array instead of a number if non-square tiles (i.e. an ol.Size
array instead of a number as tilsSize
) are used. To always get an ol.Size
, the new ol.size.toSize()
was added.
Change to ol.interaction.Draw
When finishing a draw, the drawend
event is now dispatched before the feature is inserted to either the source or the collection. This change allows application code to finish setting up the feature.
Misc.
If you compile your application together with the library and use the ol.feature.FeatureStyleFunction
type annotation (this should be extremely rare), the type is now named ol.FeatureStyleFunction
.
New features and fixes
- #3646 - Use graceful-fs in place of fs (@elemoine)
- #3645 - Fix test-coverage.js script (@elemoine)
- #3640 - Make make fail on requires and whitespace errors (@elemoine)
- #3644 - added altclick select to selectfeatures example (@t27)
- #3612 - Add ol.source.WMTS#getUrls and getRequestEncoding (@elemoine)
- #3616 - Add support for freehand drawing to the Draw interaction (@ahocevar)
- #3634 - Remove unused local variable (@fredj)
- #3629 - Problems with XYZ coordinates in snap interaction (@tsauerwein)
- #3633 - Add a Makefile section to .editorconfig (@elemoine)
- #3632 - Make host-examples target copy index.js (@elemoine)
- #3631 - Restore Modify interaction constructor test (@bjornharrtell)
- #3630 - Initial tests for Modify interaction vertex creation (@bjornharrtell)
- #3527 - Replace pake with make? (@elemoine)
- #3624 - Add a one sentence summary for several exportable symbols (@marcjansen)
- #3623 - ol3 overwrites WMS format_options instead of extending them. (@bartvde)
- #3621 - Fix typo in documentation comment (@openlayers)
- #3614 - GML2 parser does not parse all features (@bartvde)
- #3619 - Add a one sentence summary for ol.geom.* exportable symbols (@marcjansen)
- #3618 - Replace non-breaking space (U+00A0) with regular space (U+0020). (@tschaub)
- #3617 - Add ol.size.hasArea. (@tschaub)
- #3597 - Remove dead link in api doc (@fredj)
- #3613 - Add a one sentence summary for ol.interaction* exportable symbols (@marcjansen)
- #3611 - Improve error handling in Esri JSON format (@bartvde)
- #3560 - Add an example showing how to create a permalink (@tsauerwein)
- #3571 - Add wrapX support for vector layers (canvas renderer only) (@ahocevar)
- #3605 - vector-esri-edit.html uses non api method (@bartvde)
- #3602 - Rename ol.feature.FeatureStyleFunction to ol.FeatureStyleFunction. ([@tschaub](https://github.com/...
v3.4.0
Summary
The 3.4.0 release includes more than 40 merged pull requests since the 3.3.0 version. New features include dateline wrapping for tile based sources. See for instance the tiled WMS example and the WMTS example.
Also the draw interaction can be used to draw circles see the updated Draw features example which now has a Circle option.
Upgrade notes
No upgrade notes for this release.
Overview of all changes
- #3383 - GML3 tests time out in unit tests (@bartvde)
- #3401 - Allow GeoJSON to be serialized according to the right-hand rule. (@tschaub)
- #3403 - Remove unused goog.require (@fredj)
- #3362 - Configure proj4 options and transforms upon construction (@ahocevar)
- #3394 - Fix fullscreen pseudo CSS class name (@fredj)
- #3399 - Clarify when widths need to be configured on a tile grid (@ahocevar)
- #3398 - Make sure that the return value of wrapX() is stable (@ahocevar)
- #3396 - Move the compare function out of ol.interaction.Modify.handleDownEvent_ (@fredj)
- #3395 - ol.Interaction.Modify fixes (@fperucic)
- #3387 - Add wrapX option for ol.source.WMTS (@ahocevar)
- #3393 - Remove unused define (@fredj)
- #3392 - Fix switching class name of full-screen control (@tsauerwein)
- #3391 - Minor code cleanup (@fredj)
- #3388 - Add new geometry layout option for polyline format (@fredj)
- #3385 - Fix ol.tilegrid.TileGrid#getZForResolution (@elemoine)
- #3377 - Support wrapX for attributions (@ahocevar)
- #3382 - Create github source links (@ahocevar)
- #3376 - Add ol.source.Tile support for wrapping around the x-axis (@ahocevar)
- #3378 - Clarify where to ask questions (@ahocevar)
- #3380 - Test the GeoJSON layout (@fredj)
- #3360 - Don't unlisten image twice when disposing an ol.ImageTile (@fredj)
- #3361 - Listen on localhost to avoid phantomjs browsing 0.0.0.0 (@ahocevar)
- #3365 - Better docs for #getPointResolution (@ahocevar)
- #3363 - New ol.proj features (@bill-chadwick)
- #3305 - Add image loading events to image sources (r=@ahocevar,@elemoine) (@bartvde)
- #3343 - Line arrows example (@fredj)
- #3354 - Mark ol.format.GeoJSON#writeFeature(s) option param optional (@fredj)
- #3346 - Set the 'properties' member to null if the feature has not properties (@fredj)
- #3344 - Minor code cleanup (@fredj)
- #3237 - Add circles to Draw interaction. (@Morgul)
- #2691 - Add will-change CSS properties (@fredj)
- #3336 - Use ol.Map#getTargetElement function (@fredj)
- #3335 - Update rbush to version 1.3.5 (@fredj)
- #3322 - Remove unneeded map.isDef call (@fredj)
- #3327 - Add css to dist directory (@ahocevar)
- #3324 - Add interface definition for ol.SelectEvent (@ahocevar)
- #3315 - Fix Tissot indicatrix example description (@fredj)
- #3312 - Fix HiDPI support for ArcGIS REST (@ahocevar)
- #2910 - Support multiple featureTpes in GML parser (@bartvde)
- #3309 - Fix select event always reporting as multi select (@bjornharrtell)
- #3307 - Handle all non-degree units in ol.control.ScaleLine (@ahocevar)
v3.3.0
Summary
The 3.3.0 release includes almost 40 merged pull requests since the 3.2.1 version. And many of those are from new contributors! New features include support for ArcGIS Rest tile layers, several WMTS format parser and layer creation improvements, monitoring of loading tiles and an autoPan
option for panning overlays such as popups into view.
Upgrade notes
-
The
ol.events.condition.mouseMove
function was replaced byol.events.condition.pointerMove
(see #3281). For example, if you useol.events.condition.mouseMove
as the condition in aSelect
interaction then you now need to useol.events.condition.pointerMove
:var selectInteraction = new ol.interaction.Select({ condition: ol.events.condition.pointerMove // … });
Changes
- #3263 - Support ArcGIS Rest Services (@cwgrant)
- #3295 - Add RESTful to WMTS GetCapabilities optionsFromCapabilities (@sarametz)
- #3304 - Remove scale line inner padding (@fredj)
- #3296 - Add upgrade-notes.md file (@elemoine)
- #3303 - Add constant for us-ft units (@ahocevar)
- #3018 - Add SelectEvent to interaction (@bjornharrtell)
- #3301 - Select interaction unit tests (@bjornharrtell)
- #3298 - Make ol.source.Source inherit from ol.Object (@fredj)
- #3297 - Add getters to ol.source.WMTS (@fredj)
- #3281 - Fix mouseMove event type comparison for IE10-11, pointermove (@adube)
- #3293 - Add missing opacity option for ol.style.IconOptions (@ahocevar)
- #3284 - Fix jsdoc type for arrays of listening keys (@fredj)
- #3278 - Add goog.provide for ol.DrawEventType (@elemoine)
- #3272 - Added getter function to return the wrapped source within the cluster (@acanimal)
- #3275 - Add ol.layer.Heatmap#blur getter and setter (@fredj)
- #3142 - WMTS Get Cap document with updated WMTS.optionsFromCapabilities function (@sarametz)
- #3271 - [wip] Fix misplaced comment blocks (@fredj)
- #3273 - Remove unused createGetTileIfLoadedFunction function. (@tschaub)
- #3270 - Make ol.Overlay autoPan default to false (@elemoine)
- #3268 - Fix autoPan in examples with ol.Overlay on hover (@tsauerwein)
- #3256 - Add autoPan option to ol.Overlay (@tsauerwein)
- #3261 - Fix forEachCorner extent, add TopLeft (@adube)
- #3260 - Remove unused goog.require (@fredj)
- #3246 - Avoid creating unnecessary images in tile layers. (@tschaub)
- #3254 - Use lineCap, lineJoin and miterLimit stroke properties in RegularShape (@fredj)
- #3252 - Avoid leaking global listenerSpy. (@tschaub)
- #3248 - Add tile loading events to image tile sources. (@tschaub)
- #3240 - Changes from the v3.2.x branch. (@openlayers)
- #3233 - Four small fixes. (@stweil)
- #3232 - Fix typos found by codespell. (@stweil)
- #3231 - Make ol.layer.Heatmap#radius configurable (@fredj)
- #3225 - Respect attributions passed to TileJSON source. (@tschaub)
- #3223 - Resize the canvas when the tile size changes. (@tschaub)
- #3224 - Provide the ability to get the layer name from a MapQuest source (@bartvde)
- #3222 - Add geodesic option for measure (@bartvde)
- #3221 - Select the uppermost feature (@fredj)
- #3211 - Bing https logo fix. (@photostu)
- #3215 - Allow reuse of layer rendering code without creating a map. (@tschaub)
v3.2.1
v3.2.0
Summary
The 3.2.0 release includes 70 merged pull requests since 3.1.0. Of note, the KML format now parses NetworkingLink
tags. The measure example was reworked to display measurements and help messages while drawing. A WMTS GetCapabilities format was added. The WebGL renderer now supports feature hit detection (on point features). And you can now detect features/colored pixels on image and tile layers! See the full list of changes below.
Upgrade notes
The 3.2.0 release maintains a backwards-compatible API with the 3.1.0 release, so upgrades should be painless. Some special considerations below.
- You should not call
view.setRotation
withundefined
, to reset the view rotation to0
then useview.setRotation(0)
(see #3176). - If you use
$(map.getViewport()).on('mousemove')
to detect features when the mouse is hovered on the map, you should now rely on thepointermove
map event type and check in thepointermove
listener that thedragging
event property isfalse
(see #3190).
Changes
- #3171 - KML: Parsing of NetworkLink tag (@oterral)
- #3209 - Coding style fixes (@fredj)
- #3208 - Add setters and getters for imageLoadFunction (@bartvde)
- #3019 - Add option to allow Select interaction logic to select overlapping features (@bjornharrtell)
- #3206 - Add tooltip to show measure + help message while drawing (@pgiraud)
- #3205 - Use ol.extent.createOrUpdateFromCoordinate (@fredj)
- #3026 - Add support of reading WMTS Get Cap document (@htulipe)
- #3201 - Pass on opt_fast to parent clear function in ol.source.ServerVector (r=@elemoine,@gberaudo) (@bartvde)
- #3199 - Minor jsdoc fixes (@fredj)
- #3059 - Cache the buffered extent value (@fredj)
- #3196 - Remove unnecessary newlines (@fredj)
- #3099 - Fix up parsing of OGR GML with ol.format.GML (@bartvde)
- #3195 - Coding style (@fredj)
- #3192 - Add "url" option to ol.source.MapQuest (@elemoine)
- #3172 - Introduce forEachLayerAtPixel (@tsauerwein)
- #3178 - GeoJSON externs fixes (@fredj)
- #3179 - Disallow undefined values for ol.layer.Base (@fredj)
- #3161 - Doc fix. writeFeaturesNode receives an array of Feature (@3x0dv5)
- #3169 - Fix default icon style in kml format (@oterral)
- #3190 - Introduce
dragging
flag for MapBrowserEvent (@tsauerwein) - #3135 - Make changing the label of ZoomToExtent/FullScreen control consistent (@tsauerwein)
- #3186 - Take the pixel ratio into account when clipping the layer (@fredj)
- #3183 - Allow other params than 'mode' in example page query string. (@htulipe)
- #2791 - Re enable rotation button transition (@fredj)
- #3180 - Add a getMap function to ol.FeatureOverlay (r=@ahocevar) (@bartvde)
- #3176 - Disallowed undefined rotation value (@fredj)
- #3177 - Add example showing how to style polygon vertices (@tsauerwein)
- #3174 - Use view.getRotation or view.getResolution instead of view.getState (@fredj)
- #3170 - Coding style (@fredj)
- #3108 - Support skipping features in the WebGL renderer (@tsauerwein)
- #3163 - Use the layerStatesArray property from the frameState (@fredj)
- #3159 - Don't pass specific options to the parent constructor (@fredj)
- #3066 - Introduce hasFeatureAtPixel (@tsauerwein)
- #3065 - Add hit-detection support for WebGL (@tsauerwein)
- #3128 - Allow rendering of feature when download of icon failed (@oterral)
- #3156 - Move readProjectionFrom* functions to the base classes (@fredj)
- #3107 - Also listen on loading images (@elemoine)
- #3153 - Add missing GeoJSONFeature#bbox property (@fredj)
- #3154 - Remove unnecessary newlines (@fredj)
- #3146 - Enable tests for ol.geom.flat.reverse (@icholy)
- #3152 - Update closure-library and closure-util version (@fredj)
- #3145 - Add wrapX option to source.OSM and source.BingMaps (@elemoine)
- #3139 - Add ol.control.Control#setTarget (@elemoine)
- #3144 - Update CONTRIBUTING style guide with recent guidelines (@bartvde)
- #3136 - Use array.length = 0 instead of goog.array.clear (@fredj)
- #3140 - Avoid use of goog.array.clone with arrays. (@tschaub)
- #3122 - Revert "Use offsetX and offsetY if available" (@fredj)
- #2385 - Option to update vector layers while animating (@ahocevar)
- #3129 - Only update the rbush item if the extent has changed (@fredj)
- #3117 - Add pixelRatio support for DOM vector renderer (@ahocevar)
- #3124 - Add a space between scale -value and -unit (@sirtet)
- #3130 - Document default value (@fredj)
- #3105 - ol.geom.Geometry#getExtent re-factoring (@fredj)
- #3118 - Bugfix: "Cannot read property 'firstElementChild' of null" (WFS) (@naturalatlas)
- #3114 - Specify node version in CONTRIBUTING.md (@elemoine)
- #3106 - Don't pass specific options to the parent constructor (@fredj)
- #3110 - Use svg instead of png to get better image quality (@PeterDaveHello)
- #2707 - Generate source map of minified ol.js (@gberaudo)
- #3104 - Don't pass renderBuffer option to the parent constructor (@fredj)
- #3096 - popup example cleanup / simplification (@fredj)
- [#3072](https://github.com/openlayers/ol3/...