[GIS] Advice needed on JavaFX Map Rendering

javafxlayersmaps

A few months ago I inherited an old (10+ years) Java Desktop application that used maps and simple icons to represent point data to various users. The application was writted in Swing and used Esri MapObjects 2.0 and Geotools 8.3 to receive the map images from a local ASP and a local Arc GIS Map Server. All the maps were Raster. After displaying the maps using some extensions of the Esri Layers point data was represented using icons. Simple, and nothing too fancy.

But the users that now use this application complain about its user-friendliness, having as examples easy to use Google Maps Api and a similar, but online, Web-Map application I created to survey natural disasters and display them in a browser. I suggested we abandoned the Java App, in favor of a web-based one, but this is not possible as clients want to be able to use the application even in a total offline environment (the program gives them the ability to draw features on a featureless map if it cannot connect to the database or the map servers). So I was asked to upgrade it.

I started with Swing, but I came to a dead-end fast. Most of the additional UI elements they request are either abandoned addons or unreliable hacks. So I turned somewhat early to JavaFX and after a few attempts created a basic prototype of the new UI, which was received well.

For that demo, I used the new ARCGis Java SDK, and despite being in beta, it worked really well. Maps, Layers, and a basic image visualization run, and it run well. But the problem was, quite a few of the clients are running on old PCs, a few of them do not even have Direct Draw support, and no OpenGL greater than 1.0. Upgrading is out of the question, so I had to abandon that attempt. I tried using the MapObjects and Geotools 11 in the FX ui, but the SwingNode implementation is terribly unstable. Sometimes the same requests works perfectly, and sometimes the exceptions are piling up. While it is not of this forum to report, the problem lies in EDT and FX interoperability. So much for that in the end.

And so I come to my question. Is anyone aware of a library like the ARCGis SDK or the Geotools library that can work with JavaFX? I need only basic functionality, such as creating a basemap layer from a tile server and the ability to create layers on top of it for simple icons and images. If possible, basic map navigation (pan and zoom) would be welcome, but if not the code to accomplish them is easy to find anyway. I need no complicated like terrain analysis and/or geoprocessing.

Best Answer

Not sure if this is still up to date, but in the LocationTech Geoff project I am using OpenLayers 3 embedded in a Java environment for visualizing geodata. Maybe, you can get some impressions from the code/approach or even better use the project as a framework. It provides a simple to use Java API. Currently, it has support for SWT, but support for the JavaFX WebView can be added as well.

Related Question