Welcome to the cesium-gwt project.
Demos / Sample Code / JavaDoc
New Release with Major New Features: Cesium-GWT 0.2.0
Cesium-GWT 0.2.0 is now officially released, with support for the following new features:- Support for the Cesium "Viewer"
- Support for GLtf 3D models
- Support for Data sources including animated CZML and GeoJSON (and TopoJSON)
- Support for time-dependent properties (part of the CZML support)
- Support for direct creation of Entity objects (run-time creation of the equivalent of CZML animated objects, but with full Java type-checking support)
- Several new APIs needed to support these new features
- A major rewrite and expansion of JsFunction--now its own GitHub project--to make it easy to pass Java code, as function references, to JavaScript APIs that require them (e.g., event handlers)
- More GWT rewrites of Sandcastle examples (animated 3D Models, CZML with animated movement and entity tracking, GeoJSON and TopoJSON)
- Added JavaDoc (OK, it's weak, but it's there for the browsing !-)
- And a few bug fixes.
Prior Release: Cesium-GWT 0.1.1
Thanks to Mark Erikson for significant contributions and improvements made in this new release. Mark and I filled out several additional classes and methods, and made some improvements to the basic implementation style. This new release changes a few APIs from our previous 0.1 release, but Java compile-time checking should help you find any required changes very quickly. Some of the new capabilities include the ability to draw new shapes (box, polygon, polygon outlines, circles) and extrude them (make 3D solid or translucent shapes), improved camera controls, callback handling for "picking" primitives (e.g., to click on an extruded circle--a cylinder drawn vertically from the Earth's surface--and get a callback to tell you what you clicked), more input events (we now support but have not fully tested touch events), more Imagery and Terrain providers, methods to adjust imagery colors (e.g., saturation, brightness), Materials handling, some CZML support, and some SkyBox support!Prior Release: Compatible with Cesium 1.0
This is where I have gradually added GWT classes and methods as needed to support certain GWT-based projects. I have tried to keep the Java version of Cesium APIs closely matched to the JavaScript APIs, so many Cesium JavaScript examples will easily port to a Java (GWT) translation. Not all of the Cesium APIs are implemented though, but if you need additional classes or methods, they are pretty easy to create. Just follow the same pattern. Note how the "Option" classes work (e.g., inner classes CesiumWidget.Options, Camera.FlyToOptions, and classes Label and Billboard), to mimic how some Cesium JavaScript classes take an Object of optional named parameters; and look at how JsCallbacks/EventListeners work (the CesiumWidgetPlayer has a good example for showing the mouse position under the cursor), and also how Enums are implemented.
Also look at the samples to get an idea of how to use cesium-gwt. I recently created a subpackage called "sandcastle" to start to capture samples that mirror the Cesium JavaScript sandcastle demos. I've started with a couple that show off some of the newer capabilities, such as extruded polygons, improved camera controls, and scene morphing. Here's a simple demo page you can create in your own environment with "mvn clean package war:war"
Recent improvements
- I upgraded the library to work with all of the changes in Cesium 1.0. Now that Cesium is 1.0, there should not be any more "breaking changes" to the underlying library (hopefully), so cesium-gwt should continue to work with fugure Cesium updates.
- The latest version(s) of Cesium fixed a number of bugs! So I was able to remove many of the hacks I had incorporated to work around old bugs, now fixed. This makes cesium-gwt smaller and cleaner.
- The latest version of Cesium moved some things around and this also improved cesium-gwt's implementation, for example, flyTo is much simpler, and Billboard creation is drastically improved with the ability to just provide an image URL and let Cesium handle loading the image. (Although you may still want to load your own Image element first and provide the loaded image to Cesium, if you need to get the image width and height from the loaded image. I had to do this in one of my applications.)
- I changed how Enumerations work to be much more consistent with Java enums, but still map to Cesium's JavaScript enumeration implementation.
- I implemented the required GWT classes and methods to support the position picking (to display the mouse position), as shown in the sample "CesiumWidgetPlayer".
To do
Add more classes and methods. I implemented only the classes I really needed to have for my development.
Consider writing a translator to translate Cesium JS APIs to cesium-gwt. The translation design pattern is fairly straightforward. Perhaps a modification of the software that generates the Cesium reference documentation could be adapted.
Write JavaDoc! Again, here's where a translator from Cesium's docs to cesium-gwt would come in handy.
Implement test cases.
I don't have a lot of time to work on this, and unless required for my projects, I may not be able to do much except the occasional few hours of personal time. But I would be ecstatic if others wanted to contribute to the above goals.
Support or Contact
Cesium-gwt was created by @richkadel while working on applications for Harmonia Holdings Group, LLC., as an extension of the Apache 2.0-licensed Cesiumjs (http://cesiumjs.org), and is released under the same license.
Having trouble with Pages? Check out the documentation at http://help.github.com/pages or contact support@github.com and we’ll help you sort it out.