Protected
cursorThe CSS cursor to use on the map, for this controller.
If null
, the map will fall back to the previous cursor that was set on the map.
Note that changing this cursor will update the cursor on the map's DOM node. When using multiple controllers (e.g. in a CompositeController), the controller that updates the cursor last (to a non-null value), will override any other non-null cursors of active controllers on the map.
A hook to customize animation options for the zoom animation. This allows you to change the duration of the zoom animation, or its easing function, or turn off animated zooms completely.
These options are passed to MapNavigatorZoomOptions.animate.
The gesture event to determine animation options for
A hook to determine the zoom factor for a given gesture event. Factors larger than 1 zoom the map in, factors smaller than one zoom the map out. If 1 is returned, no zooming is performed.
For georeferenced maps, the x and y factor should be the same. For cartesian maps, the x factor can be different from the y factor, so you can zoom on just 1 axis. For example, on a timeline (which is a cartesian map), you may want to zoom on just the x-axis.
For incremental zooms, the factor is relative to the start of the zoom operation. For example, when the pinch started. For non-incremental zooms, the factor is relative to the current state of the map.
The default implementation:
An example of getZoomFactor customization is inverting the original zooming, so the map zooms in when the original controller would've zoomed out:
/**
* A controller that inverts the original zooming, ie. it zooms out when the original controller would've zoomed in.
*/
class InvertedZoomController extends ZoomController {
getZoomFactor(gestureEvent: GestureEvent): ZoomFactor {
const originalFactors = super.getZoomFactor(gestureEvent);
return {
x: 1 / originalFactors.x,
y: 1 / originalFactors.y
}
}
}
const navigateController = new NavigateController({
zoomController: new InvertedZoomController()
})
map.defaultController = new DefaultController({
navigateController
});
The gesture event to determine a zoom factor for
A hook to customize the zoom target for the given gesture event. This can be a point in view (pixel), model or the map's reference. If it's a point in view reference, a zoom target underneath that view point is determined automatically. For incremental zooms, the target is determined at the start of the interaction. For example, at the start of a touch pinch gesture.
The gesture event to determine a zoom target point for
a zoom target point, or null if no point could be determined
Call this method to indicate that the controller's appearance has changed. Calling this method ensures the onDraw will be called during the next rendering pass.
A hook to customize if the zooming should snap to scale levels. The default implementation snaps to scale levels if CTRL is held down.
The gesture event to determine if zooming should snap to scale levels.
A hook to check if a gesture event is a zoom end event.
If an event is both a "zoom event" and a "zoom end event", a short zoom animation is played (or extended, if it was already running). An example is the default mouse scrollwheel zooming, which plays a zoom animation every time the event occurs.
If an event is a "zoom event" but not a "zoom end event", zooming happens "incrementally" until a "zoom end event" marks the end of the zoom. Examples include touch pinch zooming, which keeps zooming until a "pinch end" event occurs.
The default implementation returns true for scroll events, , "pinch end" events.
The gesture event to check.
A hook to check if a gesture event is a zoom event.
If an event is both a "zoom event" and a "zoom end event", a short zoom animation is played (or extended, if it was already running). An example is the default mouse scrollwheel zooming, which plays a zoom animation every time the event occurs.
If an event is a "zoom event" but not a "zoom end event", zooming happens "incrementally" until a "zoom end event" marks the end of the zoom. An example is touch pinch zooming, which keeps zooming until a "pinch end" event occurs.
The default implementation returns true for scroll events, , pinch events and "pinch end" events.
The gesture event to check.
Callback that is invoked when this controller is activated on a map. This method allows controller implementations to perform setup work.
the map on which the controller has been activated
Callback that is invoked when this controller is deactivated on a map. This method allows controller implementations to perform cleanup work. This method must return either any resolved value or a promise to indicate completion of deactivation. This allows controller implementation to perform asynchronous deactivation work. During the period between this method being called and the resolution of the deactivation promise, this controller will no longer receive input events, but will still get the opportunity to draw itself.
the map on which the controller has been deactivated
a concrete value to indicate immediate deactivation or a deactivation promise.
Callback that allows controller implementations to perform custom drawing on the map. Controller shapes and icons are drawn on top of all other content in the map. Note that the map may perform caching which may cause this method to only be invoked once. When a controller implementation's appearance changes the implementation should call invalidate on itself.
the GeoCanvas on which the controller can draw shapes.
Callback that allows controller implementations to draw labels on the map. Note that the map may perform caching which may cause this method to only be invoked once. When a controller implementation's appearance changes the implementation should call invalidate on itself.
the LabelCanvas on which the controller can draw labels.
Called when a gesture event has been received. This is not intended to be overridden by subclasses. You should override the hooks instead (isZoomEvent, isZoomEndEvent, getZoomFactor, getZoomTarget, getZoomAnimationOptions and isSnapToScaleLevels).
The gesture event to handle
Called when a key event has been received. This method must return a HandleEventResult value to indicate if the event was handled or not, If this method returns EVENT_IGNORED, the map will be given the opportunity to perform default key event behaviour. If default event handling is not desired, this method should return EVENT_HANDLED. (See the Controller class description for the default behavior.)
The key event to be handled. Note that this is a KeyEvent and not a DOMEvent. You can access the corresponding DOMEvent through KeyEvent.domEvent.
The key event handling result.
An event indicating that this Controller has been activated. Activated means that the controller is active on the map, and the controller's onActivate has been called.
You can use this event to set up UI elements or other listeners related to the controller and the controller's map.
Optional
context: any2021.0
An event indicating that this Controller has been deactivated. Deactivated means that the controller has been removed from the map, and the controller's onDeactivate has been called.
You can use this event to clean up UI elements or other listeners related to the controller and the controller's map.
Optional
context: any2021.0
An event indicating that this Controller is invalidated. Invalidated means that the Controller requests for its onDraw to be called during the next rendering pass (because its appearance has changed). This event fires when invalidate is called.
Optional
context: any
A controller that allows the user to zoom the map.
For a list of events handled by this controller, see isZoomEvent.
You can customize this controller's behavior by overriding its hooks:
Since
2022.1