Code Monkey home page Code Monkey logo

worldwindandroid's People

Contributors

beak-man avatar eirizarry avatar emxsys avatar markpet42 avatar markpet49 avatar pdavidc avatar zglueck avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

worldwindandroid's Issues

Shape labels

Display of an optional label associated with all WorldWind shapes/features. From the COE requirements document:

Feature Labels

  • Feature data shall support text labels that display a provided string of text near the feature
  • Label visibility can be toggled true / false for individual features
  • Label visibility can be toggled true / false for entire map display
  • Label should support draping and bill boarding based on attribute

Multi-window

Support for resource sharing when multiple WorldWind maps are created by the same app.

Units of measure of Camera.altitude

In the class Camera, there's an altitude field which I assume represents the altitude of the view/camera over the globe instance. There's really no javadocs on it. Is this in meters? kilometers? or something else?

Ellipse / SurfaceEllipse

Display of an ellipse in 3D and an ellipse draped on the terrain surface. From the COE requirements document:

Circle

  • Ability to display a circle features
  • Coordinate (lat,lon,altitude)
  • Radius
  • Line Thickness, Line Color, Dashed lines , Dotted line, Line Alpha, Fill Color, Fill Alpha, Text Label
  • Altitude mode

Ellipse

  • Point with major radius, minor radius, and rotation
  • Coordinate (lat,lon,altitude)
  • Major radius
  • Minor radius
  • Rotation in degrees
  • Line Thickness, Line Color, Dashed lines , Dotted line, Line Alpha, Fill Color, Fill Alpha, Text Label
  • Altitude mode

Fling navigation

Navigation response to user fling gestures; rotate in the fling direction with gradually decreasing velocity. From the COE requirements document:

Map engine shall support “fling” so that depending on the velocity of the users movement the globe will continue to spin for a period of time and ease to a stop.

Once the globe has stopped moving a view change end event shall be emitted

REST image layer

Retrieval and display of imagery from a server hosting WorldWind tiles on the globe's surface.

Terrain-only picking

Provide an World Wind interface for determining only the terrain's geographic position at a screen point. This is intended as a high performance alternative to WorldWindow.pick to enable applications to shortcut the overhead of picking the entire World Wind scene when only the terrain position is desired.

KML support

Display of shapes and behaviors in OGC KML/KMZ 2.2+ files.

WCS elevations

Retrieval and display of elevations from an OGC Web Coverage Service incorporated into the globe's terrain.

Map events

Feature and terrain pick events as specified by the COEv3 Map API. From the COE requirements document:

Map Interaction & Events
The Map Engine shall accept input via multi touch and cursor input. In the case where a touch event and cursor event have the same behavior, the map engine will expose these as a single event to simplify the use of reacting to the events the map engine dispatches when the user switches between touch and cursor input. This section defines what types of user input the map will accept, and what events the map engine will emit following the user’s interaction

Tap / click
Map Engine will emit an event containing the location and elevation of the point clicked as well as the current map view (center point, bounding box, range, scale, roll, pitch, yaw)

Long Press / Right Click
Map Engine will emit an event containing the location and elevation of the point clicked as well as the current map view

Double tap / Double Click
Map Engine will emit an event containing the location and elevation of the point clicked as well as the current map view.

  • Touch Down / Mouse Down
  • Touch Up / Mouse up
  • Double Click and Drag
  • User can tap, tap, hold and drag up or down to adjust the views zoom level
  • Two finger tap

Supported CRS and projections

Support the following Coordinate Reference Systems and projections when displaying data from external sources, such as WMS:

Coordinate Reference Systems
CRS:84 WGS84 geographic longitude, then latitude, expressed in decimal degrees
EPSG:4326 WGS84 geographic latitude, then longitude, expressed in decimal degrees

Projections
EPSG:3395 World Mercator projection
EPSG:3857 Web Mercator
UTM projections over WGS84 (north zones)… EPSG:32601 to EPSG:32660
UTM projections over WGS84 (south zones)… EPSG:32701 to EPSG:32760
UPS projection over WGS84 (north zone)…… EPSG:32661
UPS projection over WGS84 (south zone)…… EPSG:32761

Airspace shapes

Display of controlled airspace shapes as required by TAIS. Within COE v3 there are 8 distinct 3D air control measures: ROUTE, CYLINDER, ORBIT, POLYGON, RADARC, POLYARC, TRACK, CURTAIN

2D map

Display the WorldWind map in a 2D projection specified by the app. From the COE requirements document:

View Modes

  • Map shall support 3D Globe view.
  • Map engine shall support 2.5 D “Columbus view”.
  • Map shall support 2D view.
  • Map view mode shall be able to be changed at runtime without losing feature data and other relevant information such as the current viewed location and approximate range / scale

Clipped Atmosphere Layer

It seems that Atmoshpere Layer is clipped the wrong way sometimes. Here it is in the CameraView example a couple of screenshots showing it (Using Nexus6p or Motorola MotoX with Android M both).

Just opened CameraView example and rotated a bit on left-right from the default view.

screenshot_20160331-124355
screenshot_20160331-124434

Redraw throttling

Limit WorldWind redraws to a frequency of 60Hz or 30Hz to improve responsiveness and smoothness.

Rectangle / SurfaceRectangle

Display of a rectangle in 3D and a rectangle draped on the terrain surface. From the COE requirements document:

Square

  • Point with width and rotation
  • Line Thickness, Line Color, Dashed lines, Dotted line, Line Alpha, Fill Color, Fill Alpha, Text Label
  • Altitude mode

Rectangle

  • Point with width, height, and rotation
  • Line Thickness, Line Color, Dashed lines, Dotted line, Line Alpha, Fill Color, Fill Alpha, Text Label
  • Altitude mode

Instrumentation

Tools for evaluating runtime performance of the WorldWind Android SDK.

Efficient feature add/remove

Ensure efficient shape/feature plotting and removal. Plotting and removal includes both adding/removing shapes from layers and setting a shape's visibility. From the COE requirements document:

Feature Plotting / Removal
The map engine shall support adding and removing one or more feature objects efficiently. In the case a batch of features is added at one time, the map engine shall intelligently execute the batch add in chunks to maintain a responsive user interface.

Feature Visibility
The map engine shall expose the ability to toggle the visibility of individual features
The map engine shall provide the ability to toggle visibility of lists of features as an efficient batch. When processing batch visibility this should be handled asynchronously to avoid locking up the map process when handling large batches

Altitude mode

Support for shape altitudes relative to ground and relative to the ellipsoid. From the COE requirements document:

Altitude Modes – Applies to all Features

Support for altitude above ground level (AGL)
Altitude relative to the underlying elevation of the given terrain directly beneath the geospatial coordinate. A vertex with an altitude value of zero or higher will always be visible above the terrain

Support for Mean Sea Level (MSL)
Altitude relative to sea level which does not account for terrain elevation. A point may appear under terrain, or below sea level.

Support for Height Above Ellipsoid
Altitude relative to the ellipsoid used to render the globe

Support for Clamp to Ground
This altitude mode forces the vertex and connecting lines to always appear at the ground terrain level and enable draping of lines, points, and polygons over terrain. In this case no portion of a Feature should be hidden by the underlying terrain. The feature should appear as if it were painted on top of the terrain.

java.lang.IllegalArgumentException: No configs match configSpec

Attempting to run WWA on an API23 emulator and ran into this error message.

 java.lang.IllegalArgumentException: No configs match configSpec
                                                                     at android.opengl.GLSurfaceView$BaseConfigChooser.chooseConfig(GLSurfaceView.java:859)
                                                                     at android.opengl.GLSurfaceView$EglHelper.start(GLSurfaceView.java:1024)
                                                                     at android.opengl.GLSurfaceView$GLThread.guardedRun(GLSurfaceView.java:1401)
                                                                     at android.opengl.GLSurfaceView$GLThread.run(GLSurfaceView.java:1240)

it's probably an emulator thing, but I'd suggest at least trying to trap the error message and report to the user that the device isn't supported.

Deep picking

Provide a mechanism to select all World Wind shapes intersecting a screen point/rectangle. This includes both shapes hidden behind another shape (whether that shape is transparent or opaque) and shapes hidden behind the terrain.

Offline map examples

Is offline map data on the roadmap?

Also, if there's any examples on how to incorporate a TMS or Slippy based map source (web mercator), that would be awesome.

Screen text

Display of screen facing text from a geographic location. From the COE requirements document:

Text Annotations

  • Ability to plot a geospatially bound text label that behaves like a point with label, just with no icon. This allows the user to plot text annotations on the map which do not need icons
  • Ability to drape geospatially bound text label on the terrain of the map. The user should have the ability to orient the direction of the text in any direction.
  • Annotation may be set to render in two ways with a property indicating the display method provided in the constructor of the annotation:
    • Annotation should support draping with rotation. The annotation text is draped over terrain as if it were painted on the ground and is oriented in the direction from the left of the text with a default rotation of 90 degrees to appear as normal text when viewing the map top down with not rotation, tilt, North point up.
    • Annotation shall support bill boarding so that it floats near the point attached and always faces users view regardless of the globes tilt and rotation

Shape editors

Support for user-shape-editing (3D shapes, surface shapes and airspace shapes). From the COE requirements document:

Feature Editing

  • Ability for the developer to place an existing map feature into an editable state.
  • Interactive UI controls which allow the user to use touch or cursor input to manipulate the locations of the vertices that make up the feature.
  • In the case of complex / composite features such as Air Control Measures the map shall also provide interactive handles to manipulate additional properties outside of the vertices such as altitude, width, and depth.
  • As the feature is manipulated incremental Feature Edit events are dispatched indicating the current state of the feature
  • Map engine allows developer to stop editing feature with an API command to complete the edit

Auto Shape Drawing
Auto shapes are features that have a derived visualization from geospatial coordinates and additional properties such as:

  • Arc – point with radius, start angle, end angle.
  • Circle – point with radius
  • Ellipse – point with major radius, minor radius, and rotation
  • Square – point with width and rotation
  • Rectangle – Point with width, height, and rotation
  • 3D Airspace Volumes – Coordinates, and modifier properties

For an auto shape draw start, a feature that centers in the current display and is approximately 25% of the width and height of the display is created and automatically displayed in an editable state. The process for drawing and editing auto shapes is basically the same

Custom renderable guidance

Developer guide outlining how to create a custom renderable for the WorldWind SDK. From the COE requirements document:

Map shall provide the ability for external OpenGL applications to render on top of the map’s rendering component. The Map shall provide API access to its GL Context and vertex matrices so that external GL components can be drawn using this data in order to provide a shared view.

Overlays

Provide a mechanism for hierarchically grouping features. From the COE requirements document:

Overlays (feature grouping)

  • The map engine shall support a concept of hierarchical overlays which are containers for groups of features, and child overlays.
  • Overlays shall be able to have visibility toggled on and off showing / hiding all child overlays and features
  • Overlays shall be able to be removed resulting I all child overlays and features also being removed
  • Overlays shall have a z-index making it possible to control which overlays feature data appears on top or below another overlays feature data
  • Map engine shall provide a way to retrieve an overlay by unique id

Master doesn't build (failing unit tests)

Sorry for posting here, but there's no instructions for creating an account on the JIRA instance

:worldwind:prepareDebugUnitTestDependencies
:worldwind:compileDebugUnitTestJavaWithJavac
/Users/alex/projects/WorldWindAndroid/worldwind/src/test/java/gov/nasa/worldwind/geom/FrustumTest.java:66: error: no suitable constructor found for Frustum(Plane,Plane,Plane,Plane,Plane,Plane)
        Frustum frustum = new Frustum(left, right, bottom, top, near, far);
                          ^
    constructor Frustum.Frustum(Plane,Plane,Plane,Plane,Plane,Plane,Viewport) is not applicable
      (actual and formal argument lists differ in length)
    constructor Frustum.Frustum() is not applicable
      (actual and formal argument lists differ in length)
/Users/alex/projects/WorldWindAndroid/worldwind/src/test/java/gov/nasa/worldwind/geom/FrustumTest.java:85: error: no suitable constructor found for Frustum(Plane,Plane,Plane,Plane,Plane,Plane)
        Frustum frustum = new Frustum(left, right, bottom, top, near, far);
                          ^
    constructor Frustum.Frustum(Plane,Plane,Plane,Plane,Plane,Plane,Viewport) is not applicable
      (actual and formal argument lists differ in length)
    constructor Frustum.Frustum() is not applicable
      (actual and formal argument lists differ in length)
/Users/alex/projects/WorldWindAndroid/worldwind/src/test/java/gov/nasa/worldwind/geom/FrustumTest.java:102: error: cannot find symbol
        f.setToProjectionMatrix(m);
         ^
  symbol:   method setToProjectionMatrix(Matrix4)
  location: variable f of type Frustum
/Users/alex/projects/WorldWindAndroid/worldwind/src/test/java/gov/nasa/worldwind/geom/FrustumTest.java:146: error: cannot find symbol
        f.transformByMatrix(m);
         ^
  symbol:   method transformByMatrix(Matrix4)
  location: variable f of type Frustum
/Users/alex/projects/WorldWindAndroid/worldwind/src/test/java/gov/nasa/worldwind/geom/FrustumTest.java:176: error: no suitable constructor found for Frustum(Plane,Plane,Plane,Plane,Plane,Plane)
        Frustum frustum = new Frustum(left, right, bottom, top, near, far);
                          ^
    constructor Frustum.Frustum(Plane,Plane,Plane,Plane,Plane,Plane,Viewport) is not applicable
      (actual and formal argument lists differ in length)
    constructor Frustum.Frustum() is not applicable
      (actual and formal argument lists differ in length)
/Users/alex/projects/WorldWindAndroid/worldwind/src/test/java/gov/nasa/worldwind/geom/FrustumTest.java:178: error: cannot find symbol
        frustum.normalize();
               ^
  symbol:   method normalize()
  location: variable frustum of type Frustum
6 errors
:worldwind:compileDebugUnitTestJavaWithJavac FAILED

FAILURE: Build failed with an exception.

Surface text

Display of text draped on the terrain surface with a geographic location. From the COE requirements document:

Text Annotations

  • Ability to plot a geospatially bound text label that behaves like a point with label, just with no icon. This allows the user to plot text annotations on the map which do not need icons
  • Ability to drape geospatially bound text label on the terrain of the map. The user should have the ability to orient the direction of the text in any direction.
  • Annotation may be set to render in two ways with a property indicating the display method provided in the constructor of the annotation:
    • Annotation should support draping with rotation. The annotation text is draped over terrain as if it were painted on the ground and is oriented in the direction from the left of the text with a default rotation of 90 degrees to appear as normal text when viewing the map top down with not rotation, tilt, North point up.
    • Annotation shall support bill boarding so that it floats near the point attached and always faces users view regardless of the globes tilt and rotation

Reduce the near clip distance

Modify World Wind Android to use the closest possible near clip distance that does not result in z-fighting. Currently, WWAndroid sets the near clip distance to 75% of the eye altitude, which is farther than necessary for the majority of eye distances.

World Wind Java implemented this capability by computing a near clip distance that achieved a 10 meter depth resolution at the far plane, a value empirically found to be sufficient for WWJ applications. See WWJ-460 for details:
http://issues.worldwind.arc.nasa.gov/jira/browse/WWJ-460

Polyline editing

Support for user-polyline-editing either by explicitly adding vertices or by drawing freehand. From the COE requirements document:

Click Drawing
Map shall provide the ability to be placed in a feature draw mode which allows the user to click location on the map to add vertices to the feature being drawn.
In the case of point features there should be an ability to drag the feature to a new location.

Freehand drawing
Ability to disable the map drag so that when the user presses and drags over the map a line can be drawn which follows the users drag creating a natural drawing capability. This feature is used for multi-user collaboration to rapidly share hand drawn features to annotate or explain movement in the map view as if they were drawing with a pen

Arc / SurfaceArc

Display of an arc in 3D and an arc draped on the terrain surface. From the COE requirements document:

Arc

  • Radius point, radius, start angle, end angle.
  • Line Thickness, Line Color, Dashed lines, Dotted line, Line Alpha, Text Label
  • Altitude mode

Compass

Display a screen compass indicating the current heading.

Android compatibility

From the COE requirements document:

  • Avoid Android version specific dependencies when possible to ensure the widest range of support for Android OS version
  • Operate on a minimum version of API Level 19 and be forwards compatible with newer API Levels
  • Run within an x86 and x86_64 distributions of Android,
  • Run in ARM and ARM64 distributions of Android
  • Performance and stability of other requirements will take precedence over broader Android support
  • WorldWind shall be compatible GL ES 1.x to enable use when running the host Android OS within a virtual machine
  • WorldWind shall be compatible GL ES 2.x

Increase the shape vertex count limit

Increase the limit on path and polygon vertex count currently imposed on applications. Currently, the following limitations apply to path and polygon shapes:

  • Maximum of 65,535 vertices for path/polygon
  • Maximum of 32,767 vertices for extruded path/polygon

These limits include the intermediate points added by path and polygon according to the maximumIntermediatePoints property. This limit is a function of the unsigned short data type used to store shape index buffers. Standard OpenGL ES 2 does not provide a larger index data type, but a widely available extension does:
https://www.khronos.org/registry/gles/extensions/OES/OES_element_index_uint.txt

Modify shapes to use the GL extension OES_element_index_uint when it's available, thereby increasing the limit on vertex count as follows:

  • Maximum of 4,294,967,295 vertices for path/polygon
  • Maximum of 2,147,483,647 vertices for extruded path/polygon

Polygon with buffer

Display of a 3D polygon with a buffer indicating a width outside the polygons outer boundary.

See #35 for information on buffering shapes.

WMTS elevation model

Retrieval and display of elevation data from an OGC Web Map Tile Service incorporated into the globe's terrain.

Polyline with buffer

Display of a 3D polyline with a buffer indicating a width on either side of the path. From the COE requirements document:

  • Line shall support an optional buffer attribute specified in meters that will create a polygon around the line extending from the center of each line segment the provided buffer distance.
  • Buffer shall support separate fill color from line so that the buffer can be displayed is a color different than the line
  • Buffer shall support a separate alpha value from the line alpha so that the buffer can be set to a be less opaque than the line
  • Buffer for 50 meters would create a line that is 100 meters wide split down the center with the lines coordinates. The connection points for the outside buffered shape at each line vertex should connect smoothly with no gaps and maintain the appropriate distance from the center at all times.

Draggable screen placemark

From the COEv3 requirements:

Enables an exisitng point icon feature to be dragged to a different position from user interaction. Facilitates placing of a new Point based feature to a position, as well as editing an exisitng point based icon to a new location. This capability can also be used to build interactive editors for Tactical Graphics

Shape performance w/ 15k+ features

Maintain map interactivity while displaying 15,000+ individual features. From the COE requirements document:

Performance

  • Ability to simultaneously display a minimum of 15000 unique feature objects.
  • Ability to handle 500 feature-location updates a second under load of 15,000 feature objects while still maintaining usability.
  • Map engine will render at a minimum of 30 FPS for smooth user experience when rendering is needed.
  • Minimize battery impact.
  • Minimize memory consumption.

Scalability
The map engine shall be designed to handle large volumes in batch processes. The map engine should be able to intelligently break large batches into smaller groups to avoid locking up the map. The result of batch transactions can be delivered asynchronously once complete. The goal of this is that the map engine will always be responsive to the user’s input even when running a long task such as adding a batch of 5,000 units in one API call, or setting the visibility of a list of 3,000 features. Map engine should remain consistently usable at a target of 30 fps when performing ongoing batch operations. The goal is to allow a task to run as long as it needs to without locking the UI thread.

Polygon editing

Support for user-polygon-editing either by explicitly adding vertices or by drawing freehand. From the COE requirements document:

Click Drawing
Map shall provide the ability to be placed in a feature draw mode which allows the user to click location on the map to add vertices to the feature being drawn.
In the case of point features there should be an ability to drag the feature to a new location.

Freehand drawing
Ability to disable the map drag so that when the user presses and drags over the map a line can be drawn which follows the users drag creating a natural drawing capability. This feature is used for multi-user collaboration to rapidly share hand drawn features to annotate or explain movement in the map view as if they were drawing with a pen

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.