Package globus.glmap
Class GLMapGesturesDetector
java.lang.Object
globus.glmap.GLMapGesturesDetector
- All Implemented Interfaces:
android.view.View.OnTouchListener
Detector of gestures for map view
-
Field Summary
Modifier and TypeFieldDescriptionboolean
Inverse one finger zoom (tap-zoom) gesture direction. -
Constructor Summary
ConstructorDescriptionGLMapGesturesDetector
(GLMapViewRenderer renderer, android.os.Handler handler) Default constructor -
Method Summary
Modifier and TypeMethodDescriptionlong
Minimal speed to trigger fling event Default implementation returns 400long
If last move event was older that returned value no fling events will be triggered Default implementation returns 100000000long
Time to trigger long press Default implementation returns 500000000long
getMaxTapsToDetect
(int numberOfTouches) Maximum taps to detect for given number of touches Default implementation return 2 for 1 touch and 1 for otherslong
Time between taps Default implementation returns 350000000int
Returns number of active touchesfloat
Pitch events disabled if y distance between fingers is more then return value.float
Rotation starts when user rotates two fingers for more than returned value Default implementation returns 10float
Rotation resets if user rotates for angle less then gatefloat
Tap events disabled if movement of more then returned value is detected Default implementation returns 10float
Tap events disabled if zoom of more than returned value is detected Default implementation returns 1.01ffloat
getTouchX
(int index) Returns x coordinate of the touchfloat
getTouchY
(int index) Returns y coordinate of the touchvoid
onBegin()
Called when new touch started Default implementation does notingvoid
onEnd()
Called when all touches ended Default implementation rotate map to 0 if current angle is in range 340 ..void
onFling
(float speedX, float speedY) Called when fling is detected Default implementation starts deceleration animationvoid
onLongPress
(int numberOfTouches, float cx, float cy) Called when long press detected.void
onLongPressMove
(float dx, float dy) Called when movement after long press detectedvoid
onMove
(float dx, float dy) Called when movement detected Default implementation move map to new center without animationvoid
onPitch
(float distance) Called when pitch gesture is detected.void
onRotate
(float delta, float cx, float cy) Called when rotation is detected Default implementation rotate map with animation if delta is greater than rotation gate.void
Called when rotation reset happensvoid
onTap
(int numberOfTouches, int numberOfTaps, float cx, float cy) Called when tap detected.boolean
onTouch
(android.view.View v, android.view.MotionEvent motionEvent) void
onZoom
(float k, float cx, float cy) Called when zoom detectedvoid
Stop detecting touches util all current touches are up
-
Field Details
-
oneFingerZoomInverse
public boolean oneFingerZoomInverseInverse one finger zoom (tap-zoom) gesture direction. `True` by default.
-
-
Constructor Details
-
GLMapGesturesDetector
public GLMapGesturesDetector(@NonNull GLMapViewRenderer renderer, @NonNull android.os.Handler handler) Default constructor- Parameters:
renderer
- position, angle and zoom of this map will be modified by this detectorhandler
- gesture handler
-
-
Method Details
-
stopDetectingTouches
public void stopDetectingTouches()Stop detecting touches util all current touches are up -
getTouchX
public float getTouchX(int index) Returns x coordinate of the touch- Parameters:
index
- index of touch- Returns:
- x coordinate of touch (in pixels)
-
getTouchY
public float getTouchY(int index) Returns y coordinate of the touch- Parameters:
index
- index of touch- Returns:
- y coordinate of touch (in pixels)
-
getNumberOfTouches
public int getNumberOfTouches()Returns number of active touches- Returns:
- number of active touches
-
onTap
public void onTap(int numberOfTouches, int numberOfTaps, float cx, float cy) Called when tap detected. Default implementation performs zoom in on numberOfTouches == 1 and numberOfTaps ==2 Default implementation performs zoom out on numberOfTouches == 2 and numberOfTaps ==1- Parameters:
numberOfTouches
- number of touchesnumberOfTaps
- number of tapscx
- x coordinate of the touches centercy
- y coordinate of the touches center
-
onLongPress
public void onLongPress(int numberOfTouches, float cx, float cy) Called when long press detected. Default implementation does nothing- Parameters:
numberOfTouches
- number of touchescx
- x coordinate of the touches centercy
- y coordinate of the touches center
-
onMove
public void onMove(float dx, float dy) Called when movement detected Default implementation move map to new center without animation- Parameters:
dx
- movement distance over x axis (px)dy
- movement distance over y axis (px)
-
onLongPressMove
public void onLongPressMove(float dx, float dy) Called when movement after long press detected- Parameters:
dx
- movement distance over x axis (px)dy
- movement distance over y axis (px)
-
onZoom
public void onZoom(float k, float cx, float cy) Called when zoom detected- Parameters:
k
- zoom coefficientcx
- x coordinate of the touches centercy
- y coordinate of the touches center
-
onFling
public void onFling(float speedX, float speedY) Called when fling is detected Default implementation starts deceleration animation- Parameters:
speedX
- speed over x axis (px/s)speedY
- speed over y axis (px/s)
-
onRotate
public void onRotate(float delta, float cx, float cy) Called when rotation is detected Default implementation rotate map with animation if delta is greater than rotation gate.- Parameters:
delta
- angle delta (in degrees)cx
- x coordinate of rotation center (in pixels)cy
- y coordinate of rotation center (in pixels)
-
onPitch
public void onPitch(float distance) Called when pitch gesture is detected.- Parameters:
distance
- distance of pitch gesture
-
onBegin
public void onBegin()Called when new touch started Default implementation does noting -
onEnd
public void onEnd()Called when all touches ended Default implementation rotate map to 0 if current angle is in range 340 .. 20 -
onRotationReset
public void onRotationReset()Called when rotation reset happens -
getTapDistanceGate
public float getTapDistanceGate()Tap events disabled if movement of more then returned value is detected Default implementation returns 10- Returns:
- max move distance allowed for taps (in points)
-
getPitchYDeltaGate
public float getPitchYDeltaGate()Pitch events disabled if y distance between fingers is more then return value. Default implementation returns 100- Returns:
- max y distance allowed for pitch gesture (in points)
-
getTapZoomGate
public float getTapZoomGate()Tap events disabled if zoom of more than returned value is detected Default implementation returns 1.01f- Returns:
- max zoom allowed for taps
-
getRotationGate
public float getRotationGate()Rotation starts when user rotates two fingers for more than returned value Default implementation returns 10- Returns:
- angle when map rotation starts (in degrees)
-
getRotationResetGate
public float getRotationResetGate()Rotation resets if user rotates for angle less then gate- Returns:
- gate value for angle
-
getFlingTimeGate
public long getFlingTimeGate()If last move event was older that returned value no fling events will be triggered Default implementation returns 100000000- Returns:
- max time to trigger fling event (in nanoseconds)
-
getFlingSpeedGate
public long getFlingSpeedGate()Minimal speed to trigger fling event Default implementation returns 400- Returns:
- minimal speed to trigger fling event in px/s
-
getLongPressDuration
public long getLongPressDuration()Time to trigger long press Default implementation returns 500000000- Returns:
- time between taps (in nanoseconds)
-
getMultiTapTimeGate
public long getMultiTapTimeGate()Time between taps Default implementation returns 350000000- Returns:
- time between taps (in nanoseconds)
-
getMaxTapsToDetect
public long getMaxTapsToDetect(int numberOfTouches) Maximum taps to detect for given number of touches Default implementation return 2 for 1 touch and 1 for others- Parameters:
numberOfTouches
- number of touches- Returns:
- number of taps to detect
-
onTouch
public boolean onTouch(android.view.View v, android.view.MotionEvent motionEvent) - Specified by:
onTouch
in interfaceandroid.view.View.OnTouchListener
-