Class MapNavigator.PanAction

java.lang.Object
com.luciad.maps.MapNavigator.PanAction
All Implemented Interfaces:
AutoCloseable
Enclosing class:
MapNavigator

public static final class MapNavigator.PanAction extends Object implements AutoCloseable
Class that allows to build a pan action and apply it, either directly or using an animation.

Panning works by

  • 'grabbing' a point on the map: see from
  • defining where that point ends up after the pan operation: see toLocation

Example of an immediate pan action:

Map.ViewMapTransformation viewMapTransformation = map.getViewMapTransformation();
Point mapPoint = viewMapTransformation.viewToMap(Map.LocationMode.ClosestSurface, fromLocationPixels);
if (mapPoint != null) {
map.getMapNavigator().newPanAction().from(mapPoint).toLocation(toLocationPixels).pan();
}

Example of an incremental pan action (for example based on a mouse drag):

Map.ViewMapTransformation viewMapTransformation = map.getViewMapTransformation();
Point point = viewMapTransformation.viewToMap(Map.LocationMode.ClosestSurface, fromViewLocation);
if (point != null) {
panAction = map.getMapNavigator().newPanAction().from(point);
// When a drag event arrives
panAction.toLocation(eventLocation).pan();
// When another drag event arrives
panAction.toLocation(eventLocation).pan();
// When the drag gesture stops: cleanup
panAction.close();
}
  • Method Details Link icon

    • finalize Link icon

      protected void finalize()
      Overrides:
      finalize in class Object
    • close Link icon

      public void close()
      Specified by:
      close in interface AutoCloseable
    • from Link icon

      @NotNull public MapNavigator.PanAction from(@NotNull Point fromMapLocation) throws IllegalArgumentException
      Sets the Map location (i.e.

      a coordinate defined in Map#getReference) from which the pan action will start. This point will be moved to a new view location when the pan action is executed.

      Setting the from location is mandatory. Make sure to call either this method or the fromViewLocation method. Not setting the from location will cause the PanAction#pan method to throw an exception. When it is set more than once, only the last call to one of the 'from' methods will be taken into account.

      Parameters:
      fromMapLocation - a point defined in the reference of the Map
      Returns:
      this
      Throws:
      IllegalArgumentException - if the from location is not set in the map coordinate reference.
    • fromViewLocation Link icon

      @NotNull public MapNavigator.PanAction fromViewLocation(@NotNull Coordinate fromViewLocation)
      Sets the location in view (device independent pixel) coordinates from which the pan action will start.

      This point on the map that corresponds to this view location will be moved to a new view location when the pan action is executed.

      Additionally, when using this method the panning behavior will be slightly different compared to when using the from method: when using a point near the horizon, the movement of the camera will be limited to prevent very large changes to it.

      If no point on the map corresponds to this view location, the pan action will have no effect.

      Setting the from location is mandatory. Make sure to call either this method or the from method. Not setting the from location will cause the PanAction#pan method to throw an exception. When it is set more than once, only the last call to one of the 'from' methods will be taken into account.

      Parameters:
      fromViewLocation - the location in view (device independent pixel) coordinates from which the pan action will start.
      Returns:
      this
      Since:
      2023.0
    • animate Link icon

      @NotNull public MapNavigator.PanAction animate(boolean animated)
      Specifies if the action should use an animation.
      Parameters:
      animated - if this action should use an animation. The default is false.
      Returns:
      this
    • duration Link icon

      @NotNull public MapNavigator.PanAction duration(@NotNull Duration duration)
      Specifies the duration of the animation.

      This parameter is only used if animate(bool) is called with true as argument.

      Parameters:
      duration - the duration of the animation in milliseconds. The default is 2000 (=2 seconds)
      Returns:
      this
    • toLocation Link icon

      @NotNull public MapNavigator.PanAction toLocation(@NotNull Coordinate toViewLocation)
      Executes the pan action by moving the 'from' Map location (PanAction#from or PanAction#fromViewLocation) to the given location in view (device independent pixel) coordinates.

      If PanAction#animate is called with true as argument, this method will start a pan animation.

      Parameters:
      toViewLocation - a location in view (device independent pixel) coordinates
    • pan Link icon

      public void pan() throws IllegalStateException
      Executes the pan action by moving the 'from' Map location (PanAction#from or PanAction#fromViewLocation) to the location in view (device independent pixels) coordinates (PanAction#toLocation).

      If PanAction#animate is called with true as argument, this method will start a pan animation.

      It is possible to call this method multiple times with different parameters. This allows to start a pan session. A pan session is useful, for example, when navigating using the mouse, for example using a drag gesture.

      See MapNavigator.PanAction for an example usage.

      Throws:
      IllegalStateException - if the action is not built correctly, for example if mandatory parameters are missing, or if incompatible parameters are configured.