Releases: OpenGeoscience/geojs
Releases · OpenGeoscience/geojs
Version 0.10.4
Changes
- Added a pixelmap feature and example (#637)
- The location with a quad is reported in mouse events and point search functions (#635)
- Canvas elements can be rendered in quads on the canvas renderer (#634)
- Most features support visibility (#632)
- Colors can be specified with a greater variety of css methods, such as
rgb()andrgba()(#636) - Point annotations can scale with zoom (#628)
Version 0.10.3
Version 0.10.2
Changes
- Add a closed flag for line features (#602)
- Minor changes and bug fixes in the interactor (#603, #604, #605)
- Allow showing partial tiles on edges (#606)
- Minor fixes to geojson rendering (#609)
- Update to VGL 0.3.10 (#608, #612)
- Reduce flickering in point cluster rendering (#621)
- Beta support for interactive annotations and a new example (#613, #616)
Version 0.10.1
Bug fixes
- Fixed a bug preventing deletion of stroked polygons (#601)
Version 0.10.0
Breaking changes
- Removed the
planeFeatureclass in favor of the faster and more powerfulquadFeature(#583) - Changed the callback signature for the
fillstyle, which turns on or off rendering the polygon fill (#597)
Additions and improvements
- Improved heatmap feature and example (#574, #577, #578, #579)
- Replaced grunt build tasks with webpack and npm scripts (#580)
- Added a d3 rendered
quadFeature(#581) - Added selection-based zoom (#582)
- Added an interface for
createLayerto request renderers by feature support (#590) - Improved polygon rendering performance (massively) and added a usage example (#594)
- Added an example of customizing the style of WMS layers (#595)
- Added stroking to the polygon feature (#597)
Bug fixes
- Fixed a bug in box selection with map rotation (#582)
- Fixed the
drawmethod on GL and canvas features (#585) - Fixed a rendering bug in GL line features (#597)
- Removed the now unavailable mapquest tile servers from the examples (#598)
Version 0.9.1
Changes
- Added a new heatmap feature (#557)
- Switched to earcut for triangulating polygons (#555)
- Added methods on
geo.transformto load EPSG projections from epsg.io (#561) - Recorded the git SHA at build time as
geo.sha(#562) - Made
tileLayer.tilesAtZoomconfigurable to support rectangular images (#568) - Added caching to proj4 transform objects (#570)
- Added jQuery to the distributed bundle (#572)
Version 0.9.0
New features
- Added a canvas renderer for tile layers and quad features
- Added new marker styles for d3 rendered vectors
- Zooming with the mouse wheel now supports animation and momentum (see the updated Tiles example)
- All files have been converted into CommonJS modules and are built with webpack
- PhantomJS tests are now executed with the Karma test runner
- Unit test coverage information is collected by istanbul and reported to codecov
- Performance results are submitted to CDash during testing as a JSON-encoded "notes" file (example)
Bug fixes
- Fixed several bugs related to map animations and transitions
- Fixed a tile layer performance bug when
keepLower=false
Breaking changes
- The global
inheritfunction has moved togeo.inherit - The released bundle (
geo.js) now includes pnltri, proj4, and gl-matrix internally - The external bundle (
geo.ext.js) now contains only jQuery and d3 - All sources in
src/core/have moved up a directory to be consistent with the namespaces in the module - The jQuery plugin has moved to OpenGeoscience/geojs-jquery-plugin and geojs-jquery-plugin on npm
Version 0.8.0
Major changes
- Quad features have been created as a replacement for plane features. They can draw multiple convex quadrilaterals with images or solid colors as textures within a single feature instantiation. These features also support default styles or images that display while asynchronous resources load.
- A new quad example demonstrates the new capabilities of the quad feature.
- A new reprojection example demonstrates how quad features can be used to reproject a standard tile layer. It also provides an additional example of using mouse events on point features to display textual information in a popup box and to recenter the map on click.
- UI Layers will now automatically remain on top when adding new layers.
- Migrated to ESLint from jshint/jscs for style checking.
Performance improvements
Migrating from the plane feature to the new quad feature provides major performance gains for the GL tile layer. @manthey provided some benchmarks in his PR demonstrating how much this improves performance on a variety of platforms. Here is an summary of the improvements he measured:
| Test | Average frame (ms) | Slow frames (%) | Worst frame (ms) |
|---|---|---|---|
| desktop-chrome-plane | 12.69 | 24.59 | 84.9 |
| desktop-chrome-quad | 3.31 | 0.44 | 20.74 |
| destop-firefox-plane | 55.25 | 55.52 | 1316.73 |
| destop-firefox-quad | 7.5 | 3.82 | 41.04 |
| laptop-chrome-plane | 25.55 | 60.21 | 157.15 |
| laptop-chrome-quad | 3.89 | 3.31 | 62.62 |
| laptop-firefox-plane | 130.04 | 95.71 | 1126.31 |
| laptop-firefox-quad | 21.92 | 91.1 | 67.21 |
Version 0.7.0
New features
- Maps can now be rotated either through the javascript API or by pressing
Ctrlwhile dragging or using the mouse wheel. - The Tile Layer example allows turning on or off rotations or restricting rotations to specific orientations.
- A new renderer fallback API supports querying support for a renderer and falling back to a different supported renderer. The default OSM layer now supports this mechanism falling back to a raw HTML interface when webGL is not available.
Bug fixes
- The Deepzoom example was mistakenly using the HTML renderer.
- Fixed several race conditions involved in loading and purging tiles
- The tile cache will now automatically grow when it is not large enough to contain all of the tiles in use
Testing
- Unit tested code coverage is now up to 62% from 42% at version 0.6.
Version 0.6.0
Release Notes
New features and API additions
- Completely new tile layer class that moves formally GL specific code into core
- Maps no longer require GL or even a base layer
- Support for SVG and HTML rendering for tile layers
- Support for arbitrary PROJ4 projection strings
- Support wrapping tiles both horizontally and vertically for periodic images
- Tiles can be an arbitrarily sized rectangle
- Hooks for dynamically generated tiles rather than just static images
- The definition of "zoom level" is now consistent with the use in other libraries
- New camera class used to keep track of the visible area and world to image space conversions
- General support for image pyramids through the tile layer (including medical imaging)
- Choropleth feature type
- New API for widgets
- New example showing off the features available for tile layers
- GeoJSON reader now supports Polygon and Multipolygon geometries
- Layers can now be reordered dynamically
- Added a new mouse event (
click) that detects mouse clicks on the map canvas - The map interactor can be disabled temporarily to cede control of the mouse and keyboard events to external handlers
- Support for subdomains in tile url template strings
- Opacity controls are now supported by all layer types
- Map "origin" parameter provides a fixed offset for world coordinates to support higher precision at high zoom levels
- New map option (
clampZoom) to limit zoom levels to a given range - New
osmLayeroption (tileRounding) to control which tiles are loaded at non-integer zoom levels
API changes
- Web mercator (
EPSG:3857) coordinates are now in units of meters rather than degrees - Lower resolution tiles are loaded before high resolution tiles
- Creates the perception of faster load times
- Greatly reduces the occurrence of background visibility while tiles load
- Removed the per-layer geographic projection attribute (
layer.gcs) that was never fully implemented- Every layer is now expected to render in the map's world coordinate system
- Feature layers can define a "local" coordinate system that is used internally
- Tile layers have an additional coordinate system defined for each displayable zoom level
- Removed
geo.mercatorin favor of a generic projection class based on PROJ4 - Tile URL template strings now use the more common curly brackets (
{x}) rather than angle brackets (<x>) - Nearly all of the internals of the
osmLayer
Performance
- A tile fetch queue now prioritizes downloaded tiles by what is currently in view
- Mouse event handlers are now throttled to fire at most every 30 ms
- Compiled GL shaders are now cached and shared between features
- Configurable tile cache size
Testing
- A new library of "mocked" classes has been started to mock interfaces between the classes inside unit tests.
- All new core classes have unittest coverage over 80% and many more classes now have coverage over 50%
| File | Cov | File | Cov | File | Cov |
|---|---|---|---|---|---|
| event.js | 100.0% | tileLayer.js | 96.2% | mapInteractor.js | 79.7% |
| osmLayer.js | 100.0% | tile.js | 96.1% | renderer.js | 71.4% |
| tileCache.js | 100.0% | object.js | 90.4% | layer.js | 70.8% |
| timestamp.js | 100.0% | sceneObject.js | 87.3% | featureLayer.js | 69.0% |
| version.js | 100.0% | planeFeature.js | 87.0% | init.js | 66.3% |
| fetchQueue.js | 100.0% | imageTile.js | 81.8% | map.js | 55.7% |
| camera.js | 97.7% |
Infrastructure and building
- Continuous coverage reporting of unit tests submitted to CDash
- VGL submodule removed in favor of inclusion via bower
- Support for installing as the
rootuser - Data used for testing and examples are now hosted at data.kitware.com
- The library is no longer built automatically after
npm installto fix downstream build problems.
Bug fixes
- Setting camera bounds now uses the correct coordinate system
- GeoJSON polygon features no longer rendered as lines
- Discrete zoom now works with touch-like devices
- The
planeFeaturenow handles coordinate transformations - Rendering operations (such as loading new tiles) now occur during map navigation and transition events
Known issues
- Several performance problems have been exposed by rendering new tiles during map navigations
- Many garbage collections occur during mouse handlers due to excessive memory allocations
- Shader programs are not shared among tiles so they need to be linked for each tile
Contributors
Huge thanks to all of the contributers, and the many others who tested, created issues, and gave feedback during the development of this release.