Skip to content

Releases: OpenGeoscience/geojs

Version 0.9.1

10 May 17:59
Compare
Choose a tag to compare

Changes

  • Added a new heatmap feature (#557)
  • Switched to earcut for triangulating polygons (#555)
  • Added methods on geo.transform to load EPSG projections from epsg.io (#561)
  • Recorded the git SHA at build time as geo.sha (#562)
  • Made tileLayer.tilesAtZoom configurable to support rectangular images (#568)
  • Added caching to proj4 transform objects (#570)
  • Added jQuery to the distributed bundle (#572)

Version 0.9.0

01 Apr 13:50
Compare
Choose a tag to compare

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 inherit function has moved to geo.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

18 Feb 18:44
Compare
Choose a tag to compare

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

28 Jan 21:51
Compare
Choose a tag to compare

New features

  • Maps can now be rotated either through the javascript API or by pressing Ctrl while 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

08 Jan 18:58
Compare
Choose a tag to compare

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 osmLayer option (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.mercator in 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 root user
  • Data used for testing and examples are now hosted at data.kitware.com
  • The library is no longer built automatically after npm install to 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 planeFeature now 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.

Version 0.6.0 Release Candidate 1

19 Dec 19:55
Compare
Choose a tag to compare
Pre-release
v0.6.0-rc.1

Preparing version 0.6.0-rc.1

Version 0.5.0

07 Aug 15:59
Compare
Choose a tag to compare

New features

  • Contour feature for generating contour plots from gridded data
  • Hierarchical data clustering with an experimental option for clustered point features
  • Multipolygon support in the GeoJSON reader
  • Support for rendering with parallel projection along with discrete zooming and image to device pixel alignment
  • Per layer attribution notices as well as default attributions for OpenStreetMap
  • Support for drawing multiple maps on a single web page
  • Support for authenticated tile servers via crossOrigin = "use-credentials"

Breaking changes

  • Zoom level is now consistent with other mapping libraries
  • Removed geo.latlng
  • Changed default feature colors
  • Map nodes are now created as position: relative

Version 0.4.2

29 Apr 14:21
Compare
Choose a tag to compare
  • New examples added showing map transitions and data animation
  • Large performance improvement for point feature mouse handler setup
  • Removed jquery-mousewheel dependency
  • Toggling feature visibility now toggles mouse handlers as well
  • JQuery plugin will now accept constant values for point sizes and will no longer reset the global gl variable

Version 0.4.1

26 Mar 19:51
Compare
Choose a tag to compare
  • Fixes the built library included in the repository so that it contains vgl

Version 0.4.0

25 Mar 22:11
Compare
Choose a tag to compare
  • Updated to 0.4.0 because npm versions are immutable (the previous geojs was published up to 0.3.x)
  • Minor changes to the build process to make npm install work