Package globus.glmap

Class GLMapGesturesDetector

java.lang.Object
globus.glmap.GLMapGesturesDetector
All Implemented Interfaces:
android.view.View.OnTouchListener

public class GLMapGesturesDetector extends Object implements android.view.View.OnTouchListener
Detector of gestures for map view
  • Field Summary

    Fields
    Modifier and Type
    Field
    Description
    boolean
    Inverse one finger zoom (tap-zoom) gesture direction.
  • Constructor Summary

    Constructors
    Constructor
    Description
    GLMapGesturesDetector(GLMapViewRenderer renderer, android.os.Handler handler)
    Default constructor
  • Method Summary

    Modifier and Type
    Method
    Description
    long
    Minimal speed to trigger fling event Default implementation returns 400
    long
    If last move event was older that returned value no fling events will be triggered Default implementation returns 100000000
    long
    Time to trigger long press Default implementation returns 500000000
    long
    getMaxTapsToDetect(int numberOfTouches)
    Maximum taps to detect for given number of touches Default implementation return 2 for 1 touch and 1 for others
    long
    Time between taps Default implementation returns 350000000
    int
    Returns number of active touches
    float
    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 10
    float
    Rotation resets if user rotates for angle less then gate
    float
    Tap events disabled if movement of more then returned value is detected Default implementation returns 10
    float
    Tap events disabled if zoom of more than returned value is detected Default implementation returns 1.01f
    float
    getTouchX(int index)
    Returns x coordinate of the touch
    float
    getTouchY(int index)
    Returns y coordinate of the touch
    void
    Called when new touch started Default implementation does noting
    void
    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 animation
    void
    onLongPress(int numberOfTouches, float cx, float cy)
    Called when long press detected.
    void
    onLongPressMove(float dx, float dy)
    Called when movement after long press detected
    void
    onMove(float dx, float dy)
    Called when movement detected Default implementation move map to new center without animation
    void
    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 happens
    void
    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 detected
    void
    Stop detecting touches util all current touches are up

    Methods inherited from class java.lang.Object

    equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Field Details

    • oneFingerZoomInverse

      public boolean oneFingerZoomInverse
      Inverse 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 detector
      handler - 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 touches
      numberOfTaps - number of taps
      cx - x coordinate of the touches center
      cy - 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 touches
      cx - x coordinate of the touches center
      cy - 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 coefficient
      cx - x coordinate of the touches center
      cy - 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 interface android.view.View.OnTouchListener