mapjfx provides a JavaFX region containing a map, allowing to zoom, pan, and use markers.
Want to support mapjfx?
Copyright 2014-2020 Peter-Josef Meisch (email@example.com)
Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at
Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
building the library
this project is built using mvn. The library jar is created by running
Java versions and branches
the original version started with JDK8. In November 2018 I started the branch 2.x which is set to use Java 11 as the main development branch.
Pull requests should be based on 1.x for changes/backports in the Java 8 version and to 2.x for the current version.
Releases are based on master for the 2.x branch ad on master-1.x for the 1.x branch.
running the test application
the project contains a test application which is mostly used during development. The application can be started from
within an IDE by using the
com.sothawo.mapjfx.app.TestAppLauncher class. To get the logging, the IDE should add the provided dependency to the run classpath.
to run it from the commandline it is first necessary to build the library with all dependencies as a shaded jar and the run the test application:
mvn -P shaded package java -Dlogback.configurationFile=logback.xml -jar target/mapjfx.jar
The test application does not contain all the features, to have that, check mapjfx-demo
Note: To use the offline cache with Java 11 and up, it is necessary to add
--add-opens java.base/java.net=com.sothawo.mapjfx to the java call.
- MAPJFX-93 - Initial marker rotation.
- MAPJFX-92 - Rotate the img/label element, not the overlay.
- use Openlayers 6.4.2
- add MapCircle objects
- updates assertj, junit and slf4j versions.
- MAPJFX-82 - Map pointer event not triggered when mouse moves over a Marker.
- MAPJFX-80 - Rotate markers.
- MAPJFX-78 - fix marker and label events.
- use Java 11.0.2 (stay on LTS version)
- built with Java 13
- MAPJFX-73 - Fixed module-info
- MAPJFX-74 - Updated copyright headers.
- MAPJFX-75 - Adjust visibility of classes that need not be public
- Additional Bing Maps options.
- MAPJFX-69 - Implement cacheFilters in addition to noCacheFilters
- MAPJFX-67 offline cache parallelism
- MAPJFX-62 implement constrainExtent
- MAPJFX-66 use OpenLayers 6.0.1
- add possibility to preload URLs in the offline cache
- fix URLStreamHandler implementation
- use Java 12
- MAPJFX-59 - Hiding zoom controls.
- MAPJFX-60: Configure mapjfx with configuration object.
- MAPJFX-52 - fix context menu regression.
- MAPJFX-56: Initialization fix.
- MAPJFX-54: fix that coordinate lines were not shown on WMS
- MAPJFX-53: fix that WMS maps are not shown
- added non-interactive map mode
- removed travis-ci integration
- adapt readme
- update coypright notices
- enable map zooming with scroll wheel on markers ands labels
- added slf4j api to the libarary and logback to the testapp
- add possibility to set the map projection (either WGS_84("EPSG:4326") or WEB_MERCATOR("EPSG:3857"))
- CoordinateLines can now be closed (polygon) and have a fill color
- use OpenLayers 5.3.0
- added MapView.close() method to cleanup resources and implement AutoCloseable.
- switch to OpenJDK 11 and OpenJFX 11
- add XYZ map source (contribution from Erik Jaehne)
- add MAP_POINTER_MOVED event
- OfflineCache is now a Singleton, so one application can have multiple maps and have them use a common cache.
- report changes in the map's extent
- use OpenLayers 4.6.5
- use java 9 on travis for building (source and target class version is still set to 1.8)
- add Automatic-Module-Name to generated manifest
- added stamen watercolor type as additional map type
- moved deployment to travis build
- use OpenLayers 4.6.4
- added MARKER_ENTERED, MARKER_EXITED, MAPLABEL_ENTERED, MAPLABEL_EXITED events (thanks to skinkie)
- MapLabel.setCssClass(String) now is observed and changes a MapLabel's style directly on the map.
- use OpenLayers 4.4.0
- use OpenLayers 4.3.2
- use OpenLayers 4.2.0
- add possibility to defined filters for excluding URLs from caching
- do not use offline cache as default.
- fixes to the caching code
- added extent selection by cmd-drag (Mac OSX) / ctrl-drag (Windows)
- use OpenLayers 4.0.1
- added support for WMS servers
- use OpenLayers 3.20.1
- added mousedown, mouseup, doubleclick and rightclick events to labels and markers
- use OpenLayers 3.19.2
- use OpenLayers 3.18.2
- added events for clicks on markers and labels.
CoordinateEvent, replaced by the classes in the com.sothawo.mapjfx.event package
- bugfixes and improvements
- use OpenLayers 3.17.1
- removed MapQuest see ol issue #5484
- fixed faulty implementation of Extent fields.
- added possibility to clear the cache directory
- improved handling of openstreetmap.org tiles
- implemented caching of the files loaded from the web (map images) for faster access and offline usage.
- use OpenLayers 3.14.2
- use OpenLayers 3.13.1
- added Label objects to the MapView
- use OpenLayers 3.11.2
- new MapTypes supported: BingMaps Road and BingMaps Aerial (BingMaps API key needed, see BingMaps Portal
- use OpenLayers 3.10.0
- the fix in 1.4.7 did not work in Windows. Fixed in 1.4.8.
- fix for WebView not loading css and js files when html is loaded from a jar; introduced with JDK 1.8u60.
- update to OpenLayers 3.9.0
- update to OpenLayers 3.4.0
- fixed potential memory leaks
- internal reimplementation of Markers
- fix for interruption of 1.4.1 release process
- Bugfix: wenn MapType was set before the MapView was initialized, the setting was ignored
- display of lines/tracks
- fixed javadoc errors
- internal code review and cleanup
- switched to OpenLayers 3.1.1
- marker images cannot be dragged anymore
- open the links from the OpenLayers attributions in the default browser
- removed WebView context menu from MapView
- added marker support
- added singleclick feedback as JavaFX event with map coordinate
- set the map's extent, so that a collection of coordinates is visible
- API modifications for fluent interface
- possibility to switch between map types
- added MapType enum and property
- animationDuration type changed to int
- removed unnecessary code
- reworked MapView constructor to enable SceneBuilder compatibility
- removed slf4j-api dependency and switched to java logging to enable SceneBuilder compatibility
- readme correction
- javadoc corrections
- display a map in a JavaFX8 region
- center of map is provided as JavaFX property
- zoom of map is provided as JavaFX property
- optional animation of center and zoom changes when the properties are changed