NASA World Wind

gov.nasa.worldwind.layers
Class WorldMapLayer

java.lang.Object
  extended by gov.nasa.worldwind.avlist.AVListImpl
      extended by gov.nasa.worldwind.WWObjectImpl
          extended by gov.nasa.worldwind.layers.AbstractLayer
              extended by gov.nasa.worldwind.layers.WorldMapLayer
All Implemented Interfaces:
AVList, Disposable, MessageListener, Layer, Restorable, WWObject, PropertyChangeListener, EventListener

public class WorldMapLayer
extends AbstractLayer

Displays a world map overlay with a current-position crosshair in a screen corner.

A ClickAndGoSelectListener can be used in conjunction with this layer to move the view to a selected location when that location is clicked within the layer's map. Specify WorldMapLayer.class when constructing the ClickAndGoSelectListener.

Note: This layer may not be shared among multiple WorldWindows.


Nested Class Summary
protected  class WorldMapLayer.OrderedIcon
           
 
Field Summary
protected  Color backColor
           
protected  int borderWidth
           
protected  Color color
           
protected  ArrayList<? extends LatLon> footPrintPositions
           
protected  String iconFilePath
           
protected  int iconHeight
           
protected  double iconScale
           
protected  int iconWidth
           
protected  Vec4 locationCenter
           
protected  Vec4 locationOffset
           
protected  WorldMapLayer.OrderedIcon orderedImage
           
protected  PickSupport pickSupport
           
protected  String position
           
protected  String resizeBehavior
           
protected  boolean showFootprint
           
protected  double toViewportScale
           
 
Constructor Summary
WorldMapLayer()
          Displays a world map overlay with a current position crosshair in a screen corner
WorldMapLayer(String iconFilePath)
          Displays a world map overlay with a current position crosshair in a screen corner
 
Method Summary
protected  Position computeGroundPosition(DrawContext dc, View view)
          Compute the lat/lon position of the view center
protected  Vec4 computeLocation(Rectangle viewport, double scale)
           
protected  Position computePickPosition(DrawContext dc, Vec4 locationSW, Dimension mapSize)
          Computes the lat/lon of the pickPoint over the world map
protected  double computeScale(Rectangle viewport)
           
protected  ArrayList<LatLon> computeViewFootPrint(DrawContext dc, int steps)
          Compute the view range footprint on the globe.
 void doPick(DrawContext dc, Point pickPoint)
           
 void doRender(DrawContext dc)
           
protected  void drawIcon(DrawContext dc)
           
 Color getBackgrounColor()
           
 int getBorderWidth()
           
 List<? extends LatLon> getFootPrintPositions()
          Get the current view footprint position list.
 String getIconFilePath()
          Returns the layer's current icon file path.
 double getIconScale()
          Returns the icon scale factor.
 Vec4 getLocationCenter()
          Returns the current worldmap image location.
 Vec4 getLocationOffset()
          Returns the current location offset.
 String getPosition()
          Returns the current relative world map icon position.
 String getResizeBehavior()
          Returns the world map icon's resize behavior.
protected  double getScaledIconHeight()
           
protected  double getScaledIconWidth()
           
 boolean getShowFootprint()
           
 double getToViewportScale()
          Returns the layer's world map-to-viewport scale factor.
protected  void initializeTexture(DrawContext dc)
           
 void setBackgroundColor(Color color)
           
 void setBorderWidth(int borderWidth)
          Sets the world map icon offset from the viewport border.
 void setIconFilePath(String iconFilePath)
          Sets the world map icon's image location.
 void setIconScale(double iconScale)
          Sets the scale factor defining the displayed size of the world map icon relative to the icon's width and height in its image file.
 void setLocationCenter(Vec4 locationCenter)
          Specifies the screen location of the worldmap image, relative to the image's center.
 void setLocationOffset(Vec4 locationOffset)
          Specifies a placement offset from the worldmap's position on the screen.
 void setPosition(String position)
          Sets the relative viewport location to display the world map icon.
 void setResizeBehavior(String resizeBehavior)
          Sets the behavior the layer uses to size the world map icon when the viewport size changes, typically when the World Wind window is resized.
 void setShowFootprint(boolean state)
           
 void setToViewportScale(double toViewportScale)
          Sets the scale factor applied to the viewport size to determine the displayed size of the world map icon.
 String toString()
           
 
Methods inherited from class gov.nasa.worldwind.layers.AbstractLayer
createLayerConfigElements, dispose, doPreRender, getDataFileStore, getExpiryTime, getLayerConfigParams, getMaxActiveAltitude, getMaxEffectiveAltitude, getMinActiveAltitude, getMinEffectiveAltitude, getName, getOpacity, getRestorableState, getScale, getScreenCredit, isAtMaxResolution, isEnabled, isLayerActive, isLayerConfigDocument, isLayerInView, isMultiResolution, isNetworkRetrievalEnabled, isPickEnabled, pick, preRender, render, restoreState, setDataFileStore, setEnabled, setExpiryTime, setMaxActiveAltitude, setMinActiveAltitude, setName, setNetworkRetrievalEnabled, setOpacity, setPickEnabled, setScreenCredit
 
Methods inherited from class gov.nasa.worldwind.WWObjectImpl
onMessage, propertyChange
 
Methods inherited from class gov.nasa.worldwind.avlist.AVListImpl
addPropertyChangeListener, addPropertyChangeListener, clearList, copy, firePropertyChange, firePropertyChange, getBooleanValue, getBooleanValue, getChangeSupport, getDoubleValue, getDoubleValue, getEntries, getIntegerValue, getIntegerValue, getLongValue, getLongValue, getRestorableStateForAVPair, getStringValue, getStringValue, getStringValue, getValue, getValues, hasKey, removeKey, removePropertyChangeListener, removePropertyChangeListener, setValue, setValues
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 
Methods inherited from interface gov.nasa.worldwind.avlist.AVList
addPropertyChangeListener, addPropertyChangeListener, clearList, copy, firePropertyChange, firePropertyChange, getEntries, getStringValue, getValue, getValues, hasKey, removeKey, removePropertyChangeListener, removePropertyChangeListener, setValue, setValues
 
Methods inherited from interface java.beans.PropertyChangeListener
propertyChange
 
Methods inherited from interface gov.nasa.worldwind.event.MessageListener
onMessage
 

Field Detail

backColor

protected Color backColor

borderWidth

protected int borderWidth

color

protected Color color

footPrintPositions

protected ArrayList<? extends LatLon> footPrintPositions

iconFilePath

protected String iconFilePath

iconHeight

protected int iconHeight

iconScale

protected double iconScale

iconWidth

protected int iconWidth

locationCenter

protected Vec4 locationCenter

locationOffset

protected Vec4 locationOffset

orderedImage

protected WorldMapLayer.OrderedIcon orderedImage

pickSupport

protected PickSupport pickSupport

position

protected String position

resizeBehavior

protected String resizeBehavior

showFootprint

protected boolean showFootprint

toViewportScale

protected double toViewportScale
Constructor Detail

WorldMapLayer

public WorldMapLayer()
Displays a world map overlay with a current position crosshair in a screen corner


WorldMapLayer

public WorldMapLayer(String iconFilePath)
Displays a world map overlay with a current position crosshair in a screen corner

Parameters:
iconFilePath - the world map image path and filename
Method Detail

computeGroundPosition

protected Position computeGroundPosition(DrawContext dc,
                                         View view)
Compute the lat/lon position of the view center

Parameters:
dc - the current DrawContext
view - the current View
Returns:
the ground position of the view center or null

computeLocation

protected Vec4 computeLocation(Rectangle viewport,
                               double scale)

computePickPosition

protected Position computePickPosition(DrawContext dc,
                                       Vec4 locationSW,
                                       Dimension mapSize)
Computes the lat/lon of the pickPoint over the world map

Parameters:
dc - the current DrawContext
locationSW - the screen location of the bottom left corner of the map
mapSize - the world map screen dimension in pixels
Returns:
the picked Position

computeScale

protected double computeScale(Rectangle viewport)

computeViewFootPrint

protected ArrayList<LatLon> computeViewFootPrint(DrawContext dc,
                                                 int steps)
Compute the view range footprint on the globe.

Parameters:
dc - the current DrawContext
steps - the number of steps.
Returns:
an array list of LatLon forming a closed shape.

doPick

public void doPick(DrawContext dc,
                   Point pickPoint)
Overrides:
doPick in class AbstractLayer

doRender

public void doRender(DrawContext dc)
Specified by:
doRender in class AbstractLayer

drawIcon

protected void drawIcon(DrawContext dc)

getBackgrounColor

public Color getBackgrounColor()

getBorderWidth

public int getBorderWidth()

getFootPrintPositions

public List<? extends LatLon> getFootPrintPositions()
Get the current view footprint position list. May be null if no footprint is displayed or none has been computed.

Returns:
the current view footprint position list - may be null.

getIconFilePath

public String getIconFilePath()
Returns the layer's current icon file path.

Returns:
the icon file path

getIconScale

public double getIconScale()
Returns the icon scale factor. See setIconScale(double) for a description of the scale factor.

Returns:
the current icon scale

getLocationCenter

public Vec4 getLocationCenter()
Returns the current worldmap image location.

Returns:
the current location center. May be null.

getLocationOffset

public Vec4 getLocationOffset()
Returns the current location offset. See #setLocationOffset for a description of the offset and its values.

Returns:
the location offset. Will be null if no offset has been specified.

getPosition

public String getPosition()
Returns the current relative world map icon position.

Returns:
the current world map position

getResizeBehavior

public String getResizeBehavior()
Returns the world map icon's resize behavior.

Returns:
the icon's resize behavior

getScaledIconHeight

protected double getScaledIconHeight()

getScaledIconWidth

protected double getScaledIconWidth()

getShowFootprint

public boolean getShowFootprint()

getToViewportScale

public double getToViewportScale()
Returns the layer's world map-to-viewport scale factor.

Returns:
the world map-to-viewport scale factor

initializeTexture

protected void initializeTexture(DrawContext dc)

setBackgroundColor

public void setBackgroundColor(Color color)

setBorderWidth

public void setBorderWidth(int borderWidth)
Sets the world map icon offset from the viewport border.

Parameters:
borderWidth - the number of pixels to offset the world map icon from the borders indicated by setPosition(String).

setIconFilePath

public void setIconFilePath(String iconFilePath)
Sets the world map icon's image location. The layer first searches for this location in the current Java classpath. If not found then the specified path is assumed to refer to the local file system. found there then the

Parameters:
iconFilePath - the path to the icon's image file

setIconScale

public void setIconScale(double iconScale)
Sets the scale factor defining the displayed size of the world map icon relative to the icon's width and height in its image file. Values greater than 1 magify the image, values less than one minify it. If the layer's resize behavior is other than AVKey.RESIZE_KEEP_FIXED_SIZE, the icon's displayed sized is further affected by the value specified by setToViewportScale(double) and the current viewport size.

Parameters:
iconScale - the icon scale factor

setLocationCenter

public void setLocationCenter(Vec4 locationCenter)
Specifies the screen location of the worldmap image, relative to the image's center. May be null. If this value is non-null, it overrides the position specified by #setPosition. The location is specified in pixels. The origin is the window's lower left corner. Positive X values are to the right of the origin, positive Y values are upwards from the origin. The final image location will be affected by the currently specified location offset if a non-null location offset has been specified (see #setLocationOffset).

Parameters:
locationCenter - the location center. May be null.
See Also:
the screen location at which to place the map.

setLocationOffset

public void setLocationOffset(Vec4 locationOffset)
Specifies a placement offset from the worldmap's position on the screen.

Parameters:
locationOffset - the number of pixels to shift the worldmap image from its specified screen position. A positive X value shifts the image to the right. A positive Y value shifts the image up. If null, no offset is applied. The default offset is null.
See Also:
setLocationCenter(gov.nasa.worldwind.geom.Vec4), setPosition(String)

setPosition

public void setPosition(String position)
Sets the relative viewport location to display the world map icon. Can be one of AVKey.NORTHEAST, AVKey.NORTHWEST (the default), AVKey.SOUTHEAST, or SOUTHWEST. These indicate the corner of the viewport to place the icon.

Parameters:
position - the desired world map position

setResizeBehavior

public void setResizeBehavior(String resizeBehavior)
Sets the behavior the layer uses to size the world map icon when the viewport size changes, typically when the World Wind window is resized. If the value is AVKey.RESIZE_KEEP_FIXED_SIZE, the icon size is kept to the size specified in its image file scaled by the layer's current icon scale. If the value is AVKey.RESIZE_STRETCH, the icon is resized to have a constant size relative to the current viewport size. If the viewport shrinks the icon size decreases; if it expands then the icon file enlarges. The relative size is determined by the current world map-to-viewport scale and by the icon's image file size scaled by the current icon scale. If the value is AVKey.RESIZE_SHRINK_ONLY (the default), icon sizing behaves as for AVKey.RESIZE_STRETCH but the icon will not grow larger than the size specified in its image file scaled by the current icon scale.

Parameters:
resizeBehavior - the desired resize behavior

setShowFootprint

public void setShowFootprint(boolean state)

setToViewportScale

public void setToViewportScale(double toViewportScale)
Sets the scale factor applied to the viewport size to determine the displayed size of the world map icon. This scale factor is used only when the layer's resize behavior is AVKey.RESIZE_STRETCH or AVKey.RESIZE_SHRINK_ONLY. The icon's width is adjusted to occupy the proportion of the viewport's width indicated by this factor. The icon's height is adjusted to maintain the world map image's native aspect ratio.

Parameters:
toViewportScale - the world map to viewport scale factor

toString

public String toString()
Overrides:
toString in class AbstractLayer

NASA World Wind