public static final class MapNavigator.PanAction extends Object implements AutoCloseable
Panning works by
from
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();
}
Modifier and Type | Method and Description |
---|---|
MapNavigator.PanAction |
animate(boolean animated)
Specifies if the action should use an animation.
|
void |
close() |
MapNavigator.PanAction |
duration(Duration duration)
Specifies the duration of the animation.
|
protected void |
finalize() |
MapNavigator.PanAction |
from(Point fromMapLocation)
Sets the
Map location (i.e. |
MapNavigator.PanAction |
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 or PanAction#fromViewLocation ) to the location in view (device independent pixels) coordinates (PanAction#toLocation ). |
MapNavigator.PanAction |
toLocation(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. |
public void close()
close
in interface AutoCloseable
@NotNull public MapNavigator.PanAction from(@NotNull Point fromMapLocation) throws IllegalArgumentException
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.
fromMapLocation
- a point defined in the reference of the Map
IllegalArgumentException
- if the from location is not set in the map coordinate reference.@NotNull public MapNavigator.PanAction fromViewLocation(@NotNull Coordinate fromViewLocation)
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.
fromViewLocation
- the location in view (device independent pixel) coordinates from which the pan action will start.@NotNull public MapNavigator.PanAction animate(boolean animated)
animated
- if this action should use an animation. The default is false.@NotNull public MapNavigator.PanAction duration(@NotNull Duration duration)
This parameter is only used if animate(bool)
is called with true as argument.
duration
- the duration of the animation in milliseconds. The default is 2000 (=2 seconds)@NotNull public MapNavigator.PanAction toLocation(@NotNull Coordinate toViewLocation)
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.
toViewLocation
- a location in view (device independent pixel) coordinatespublic void pan() throws IllegalStateException
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.
PanAction#from
or PanAction#fromViewLocation
)
PanAction#pan
)
PanAction
, which will perform cleanup
See MapNavigator.PanAction
for an example usage.
IllegalStateException
- if the action is not built correctly, for example if mandatory parameters are missing, or if incompatible parameters are configured.