Class MapNavigator.PanAction
- All Implemented Interfaces:
AutoCloseable
- Enclosing class:
MapNavigator
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 Summary
Modifier and TypeMethodDescriptionanimate
(boolean animated) Specifies if the action should use an animation.void
close()
Specifies the duration of the animation.protected void
finalize()
Sets theMap
location (i.e.fromViewLocation
(Coordinate fromViewLocation) Sets the location in view (device independent pixel) coordinates from which the pan action will start.void
pan()
Executes the pan action by moving the 'from'Map
location (PanAction#from
orPanAction#fromViewLocation
) to the location in view (device independent pixels) coordinates (PanAction#toLocation
).toLocation
(Coordinate toViewLocation) Executes the pan action by moving the 'from'Map
location (PanAction#from
orPanAction#fromViewLocation
) to the given location in view (device independent pixel) coordinates.
-
Method Details
-
finalize
protected void finalize() -
close
public void close()- Specified by:
close
in interfaceAutoCloseable
-
from
@NotNull public MapNavigator.PanAction from(@NotNull Point fromMapLocation) throws IllegalArgumentException Sets theMap
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 thePanAction#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 theMap
- Returns:
- this
- Throws:
IllegalArgumentException
- if the from location is not set in the map coordinate reference.
-
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 thePanAction#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
Specifies if the action should use an animation.- Parameters:
animated
- if this action should use an animation. The default is false.- Returns:
- this
-
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
Executes the pan action by moving the 'from'Map
location (PanAction#from
orPanAction#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
Executes the pan action by moving the 'from'Map
location (PanAction#from
orPanAction#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.
- Starting a drag will create the action with an initial state (
PanAction#from
orPanAction#fromViewLocation
) - Intermediate drag events will execute an intermediate action (by calling PanAction::to and
PanAction#pan
) - Ending a drag will destroy the
PanAction
, which will perform cleanup
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.
- Starting a drag will create the action with an initial state (
-