Package globus.glmap

Class GLMapViewRenderer

java.lang.Object
globus.glmap.GLNativeObject
globus.glmap.GLMapViewRenderer
All Implemented Interfaces:
android.view.SurfaceHolder.Callback, android.view.SurfaceHolder.Callback2, android.view.TextureView.SurfaceTextureListener

public class GLMapViewRenderer extends GLNativeObject implements android.view.SurfaceHolder.Callback2, android.view.TextureView.SurfaceTextureListener
Renderer of map
  • Field Details

    • screenScale

      public float screenScale
      Screen scale
    • attachedView

      public android.view.View attachedView
      View where this render is attached
    • surfaceWidth

      public int surfaceWidth
      Surface width
    • surfaceHeight

      public int surfaceHeight
      Surface height
  • Constructor Details

    • GLMapViewRenderer

      public GLMapViewRenderer(android.app.Activity activity)
      Default constructor
      Parameters:
      activity - activity
  • Method Details

    • dispose

      public void dispose()
      Description copied from class: GLNativeObject
      Call this method when object does not needed. This will free some native resources.
      Overrides:
      dispose in class GLNativeObject
    • attachToTextureView

      public boolean attachToTextureView(@NonNull android.view.TextureView textureView)
      Attach renderer to texture view
      Parameters:
      textureView - texture view where renderer will be attached
      Returns:
      true if restored. false if creates new surface
    • attachToSurfaceView

      public void attachToSurfaceView(@NonNull android.view.SurfaceView surfaceView)
      Attach renderer to surface view
      Parameters:
      surfaceView - surface view where renderer will be attached
    • surfaceChanged

      public void surfaceChanged(android.view.SurfaceHolder holder, int format, int width, int height)
      Specified by:
      surfaceChanged in interface android.view.SurfaceHolder.Callback
    • surfaceCreated

      public void surfaceCreated(android.view.SurfaceHolder holder)
      Specified by:
      surfaceCreated in interface android.view.SurfaceHolder.Callback
    • surfaceDestroyed

      public void surfaceDestroyed(android.view.SurfaceHolder holder)
      Specified by:
      surfaceDestroyed in interface android.view.SurfaceHolder.Callback
    • surfaceRedrawNeededAsync

      public void surfaceRedrawNeededAsync(android.view.SurfaceHolder holder, Runnable drawingFinished)
      Specified by:
      surfaceRedrawNeededAsync in interface android.view.SurfaceHolder.Callback2
    • surfaceRedrawNeeded

      public void surfaceRedrawNeeded(android.view.SurfaceHolder holder)
      Specified by:
      surfaceRedrawNeeded in interface android.view.SurfaceHolder.Callback2
    • onSurfaceTextureAvailable

      public void onSurfaceTextureAvailable(android.graphics.SurfaceTexture surfaceTexture, int width, int height)
      Specified by:
      onSurfaceTextureAvailable in interface android.view.TextureView.SurfaceTextureListener
    • onSurfaceTextureSizeChanged

      public void onSurfaceTextureSizeChanged(android.graphics.SurfaceTexture surfaceTexture, int width, int height)
      Specified by:
      onSurfaceTextureSizeChanged in interface android.view.TextureView.SurfaceTextureListener
    • onSurfaceTextureDestroyed

      public boolean onSurfaceTextureDestroyed(android.graphics.SurfaceTexture surfaceTexture)
      Specified by:
      onSurfaceTextureDestroyed in interface android.view.TextureView.SurfaceTextureListener
    • onSurfaceTextureUpdated

      public void onSurfaceTextureUpdated(android.graphics.SurfaceTexture surfaceTexture)
      Specified by:
      onSurfaceTextureUpdated in interface android.view.TextureView.SurfaceTextureListener
    • getFps

      public float getFps()
      Returns fps
      Returns:
      fps
    • setFps

      public void setFps(float fps)
      Sets fps
      Parameters:
      fps - fps to set
    • setCenterTileStateChangedCallback

      public void setCenterTileStateChangedCallback(@Nullable Runnable callback)
      Set callback that will be called when center tile state is changed
      Parameters:
      callback - Runnable that will be post to main thread when center tile state is changed
    • getCenterTileState

      public int getCenterTileState()
      Return state of center tile
      Returns:
      state of center tile
    • convertDisplayDeltaToInternal

      public MapPoint convertDisplayDeltaToInternal(@NonNull MapPoint val)
      Converts a distance between two points on the screen to delta in internal format of GLMapView.
      Parameters:
      val - The point with the delta
      Returns:
      The same object that was passed to method call.
      See Also:
    • convertDisplayDeltaToInternal

      @NonNull public MapPoint convertDisplayDeltaToInternal(@NonNull MapPoint val, double mapZoom, double mapAngle)
      Converts a distance between two points on the screen to delta in internal format of GLMapView.
      Parameters:
      val - The point with the delta
      mapZoom - Zoom to use for calculations
      mapAngle - Angle to use for calculations
      Returns:
      The same object that was passed to method call.
      See Also:
    • convertDisplayToInternal

      @NonNull public MapPoint convertDisplayToInternal(@NonNull MapPoint val)
      Converts a point on the surface to an internal map coordinate.

      MapPoint pt = mapView.convertDisplayToInternal(new MapPoint(touchX, touchY));

      Parameters:
      val - The point on surface to be converted
      Returns:
      The same object that was passed to method call.
      See Also:
    • convertInternalToDisplay

      @NonNull public MapPoint convertInternalToDisplay(@NonNull MapPoint val)
      Converts a point in internal format of GLMapView to point on the surface of view.
      Parameters:
      val - The point to be converted
      Returns:
      The same object that was passed to method call.
      See Also:
    • convertMetersToInternal

      public double convertMetersToInternal(double meters)
      Converts meters distance to internal distance
      Parameters:
      meters - The value to be converted
      Returns:
      Returns distance in internal units
    • doWhenSurfaceCreated

      public void doWhenSurfaceCreated(@NonNull Runnable r)
      Runs command on internal rendering thread. If surface does not exists at this moment Runnable will be executed when it will be created.
      
       final GLMapView mapView = (GLMapView) this.findViewById(R.id.map_view);
       mapView.doWhenSurfaceCreated(new Runnable() {
       public void run() {
       mapView.setMapCenter(center, false);
       mapView.scaleMap(scaleChange, null, false);
       }
       });
       
      Parameters:
      r - The Runnable to be executed at internal thread when surface will be created
    • setStyle

      public void setStyle(@NonNull GLMapVectorCascadeStyle style)
      Sets map style
      Parameters:
      style - style to use for map
    • setLocaleSettings

      public void setLocaleSettings(@NonNull GLMapLocaleSettings localeSettings)
      Sets map locale settings
      Parameters:
      localeSettings - New locale settings to use for translating map labels
    • getLocaleSettings

      @NonNull public GLMapLocaleSettings getLocaleSettings()
      Returns:
      GLMapLocaleSettings that was previously set
    • setBase

      public void setBase(@NonNull GLMapTileSource base)
      By default base is vector tile source.
      Parameters:
      base - Base to use
    • setOverlays

      public void setOverlays(@Nullable GLMapTileSource[] overlays)
      By default overlays is null.
      Parameters:
      overlays - Overlays to use
    • getOverlays

      @Nullable public GLMapTileSource[] getOverlays()
      Returns:
      value that was previously set.
    • getBase

      @Nullable public GLMapTileSource getBase()
      Returns:
      value that was previously set.
    • setDrawElevationLines

      public void setDrawElevationLines(boolean drawElevationLines)
      Sets visibility of elevation lines. By default is false.
      Parameters:
      drawElevationLines - visibility of elevation lines
    • getDrawElevationLines

      public boolean getDrawElevationLines()
      Returns:
      value that was previously set.
    • setDrawHillshades

      public void setDrawHillshades(boolean drawHillshades)
      Sets visibility of hill shades. By default is false.
      Parameters:
      drawHillshades - visibility of hill shades.
    • getDrawHillshades

      public boolean getDrawHillshades()
      Returns:
      value that was previously set.
    • setDrawSlopes

      public void setDrawSlopes(boolean drawSlopes)
      Sets visibility of slopes. By default is false.
      Parameters:
      drawSlopes - visibility of slopes.
    • getDrawSlopes

      public boolean getDrawSlopes()
      Returns:
      value that was previously set.
    • captureFrameWhenFinish

      public void captureFrameWhenFinish(@NonNull GLMapViewRenderer.ScreenCaptureCallback callback)
      Captures frame when surface will be created and loading of resources finished. ScreenCaptureCallback provides Bitmap as a result
      Parameters:
      callback - ScreenCaptureCallback to call with result
    • mapZoomForBBox

      public double mapZoomForBBox(@NonNull GLMapBBox bbox, int mapWidth, int mapHeight)
      Calculates zoom of map to fit given bbox
      Parameters:
      bbox - bbox that you wish to fit
      mapWidth - width of visible area
      mapHeight - height of visible area
      Returns:
      zoom of map to fit given bbox or NaN if bbox is empty.
    • getMapCenter

      @NonNull public MapPoint getMapCenter(@NonNull MapPoint point)
      Gets coordinates of the origin point of the map. If animation is in progress - this value returns final value.
      MapPoint pt = mapView.getMapCenter(new MapPoint());
      Parameters:
      point - The point to be filled with values.
      Returns:
      The same object that was passed to method call.
      See Also:
    • getCurrentMapCenter

      @NonNull public MapPoint getCurrentMapCenter(@NonNull MapPoint point)
      Gets current coordinates of the origin point of the map.
      Parameters:
      point - The point to be filled with values.
      Returns:
      The same object that was passed to method call.
    • getMapCenter

      @NonNull public MapPoint getMapCenter()
      Gets coordinates of the origin point of the map.
      MapPoint pt = mapView.getMapCenter();
      Returns:
      Returns coordinates of map center point.
      See Also:
    • setMapCenter

      public void setMapCenter(MapPoint center)
      Sets coordinates of the origin point of the map.
      mapView.setMapCenter(center);
      Parameters:
      center - New map center.
      See Also:
    • getMapGeoCenter

      @NonNull public MapGeoPoint getMapGeoCenter()
      Gets coordinates of the origin point of the map.
      MapPoint pt = mapView.getMapCenter();
      Returns:
      Returns coordinates of map center point.
      See Also:
    • setMapGeoCenter

      public void setMapGeoCenter(@NonNull MapGeoPoint geoCenter)
      Sets coordinates of the origin point of the map.
      mapView.setMapGeoCenter(center);
      Parameters:
      geoCenter - New map center.
      See Also:
    • getMapOrigin

      @NonNull public MapPoint getMapOrigin(@NonNull MapPoint point)
      Origin point of the map coordinate system.
      Parameters:
      point - The point to be filled with values.
      Returns:
      The same object that was passed to method call.
    • getMapOrigin

      @NonNull public MapPoint getMapOrigin()
      Returns:
      Returns origin point of the map coordinate system.
    • setMapOrigin

      public void setMapOrigin(float x, float y)
      Origin point of the map coordinate system (X, Y). Changing the values in this property between 0 and 1 in relative coordinates describes the point of GLMapView which is considered as a center point for `mapCenter` and `setMapCenter:animated:`.
      Parameters:
      x - x of origin
      y - y of origin
    • setSafeArea

      public void setSafeArea(int left, int top, int right, int bottom)
      Sets safe area for scale ruler and other objects
      Parameters:
      left - left inset
      top - top inset
      right - right inset
      bottom - bottom inset
    • getBBox

      @NonNull public GLMapBBox getBBox()
      BBox of current visible part of GLMapView
      Returns:
      bbox of visible part of GLMapView
    • getBBoxWithInsets

      @NonNull public GLMapBBox getBBoxWithInsets(int left, int right, int top, int bottom)
      BBox of visible part of GLMapView with applied insets. If animation is in progress - returns final value
      Parameters:
      left - left inset
      right - right inset
      top - top inset
      bottom - bottom inset
      Returns:
      bbox of visible part of GLMapView with applied insets
    • enableClipping

      public void enableClipping(GLMapBBox bbox, float minLevel, float maxLevel)
      Enables clipping of visible map area
      Parameters:
      bbox - clipping bbox to set
      minLevel - min zoom level
      maxLevel - max zoom level
    • disableClipping

      public void disableClipping()
      Disables clipping of visible map area
    • isClippingEnabled

      public boolean isClippingEnabled()
      Checks if clipping is enabled
      Returns:
      true if enabled
    • setFontScale

      public void setFontScale(float scale)
      Sets scale of font. Will trigger reloadTiles automatically;
      Parameters:
      scale - New font scale (default is 1).
    • getFontScale

      public float getFontScale()
      Returns:
      value of font scale
    • getMapAngle

      public float getMapAngle()
      Gets current angle of the map.
      Returns:
      Current angle of the map.
    • setMapAngle

      public void setMapAngle(float newAngle)
      Sets zoom level of the map.
      mapView.setMapZoom(16, false);
      Parameters:
      newAngle - new zoom level for map.
      See Also:
    • getMapZoom

      public double getMapZoom()
      Get zoom level of the map. If animation is in progress final value will return.
      double zoom = mapView.getMapZoom();
      Returns:
      Current zoom of the map.
      See Also:
    • getCurrentMapZoom

      public double getCurrentMapZoom()
      Gets current zoom level of the map.
      double zoom = mapView.getCurrentMapZoom();
      Returns:
      Current zoom of the map.
      See Also:
    • getCurrentMapScale

      public double getCurrentMapScale()
      Gets current scale of the map.
      Returns:
      current scale of the map
    • getMapScale

      public double getMapScale()
      Gets scale of the map.
      Returns:
      scale of the map
      See Also:
    • setMapZoom

      public void setMapZoom(double newZoom)
      Sets zoom level of the map.
      mapView.setMapZoom(16);
      Parameters:
      newZoom - new zoom level for map.
      See Also:
    • setMaxScale

      public void setMaxScale(double maxScale)
      Sets maximum scale of the map
      Parameters:
      maxScale - max scale to set
    • getMaxScale

      public double getMaxScale()
      Gets maximum scale of the map
      Returns:
      maximum scale of the map
    • setMapScale

      public void setMapScale(double newScale)
      Set scale of the map. Same as setMapZoom(pow(2, zoomLevel)). If animation is in progress final value will return.
      Parameters:
      newScale - new scale for map.
      See Also:
    • setAttributionPosition

      public void setAttributionPosition(int placement)
      Sets position of attribution.
      mapView.setAttributionPosition(GLMapPlacement.TopCenter);
      Parameters:
      placement - placement of attribution
    • removeAllObjects

      public void removeAllObjects()
      Remove all images, image groups, tracks and marker layers from map
      See Also:
    • add

      public void add(@NonNull GLMapDrawObject drawObject)
      Adds the GLMapDrawObject to map.
      Parameters:
      drawObject - object to add
      See Also:
    • remove

      public void remove(@NonNull GLMapDrawObject drawObject)
      Removes `GLMapDrawObject` from map.
      Parameters:
      drawObject - object to remove
      See Also:
    • setForceHidden

      public void setForceHidden(boolean forceHidden, @NonNull GLMapVectorObject poi)
      When set to true - poi will not display icon and text
      Parameters:
      forceHidden - value to set
      poi - object
    • startAnimation

      public void startAnimation(@NonNull GLMapAnimation animation)
      Starts animation.
      Parameters:
      animation - animation to start
    • animate

      @NonNull public GLMapAnimation animate(@NonNull GLMapViewRenderer.AnimateCallback callback)
      Create and starts animation using provided callback
      Parameters:
      callback - Callback that will configure animation
      Returns:
      created animation.
    • animate

      @NonNull public GLMapAnimation animate(@NonNull GLMapViewRenderer.AnimateCallback callback, @Nullable Runnable onFinish)
      Create and starts animation using provided callback
      Parameters:
      callback - Callback that will configure animation
      onFinish - Callback that will be called when animation is finished
      Returns:
      created animation.
    • reloadTiles

      public void reloadTiles()
      Force reloading of all tiles.
    • setNeedRedraw

      public void setNeedRedraw()
      Force redraw
    • setMapDidMoveCallback

      public void setMapDidMoveCallback(@Nullable Runnable callback)
      Sets callback that will be called after move animation finished
      Parameters:
      callback - callback that will be post to ui thread after animation finished
    • ForceOpenGL2

      public static void ForceOpenGL2()
      After calling this function any new GLMapView will use OpenGL 2.0 even if device supports OpenGL 3.0 Some cheap Android devices have problems with drivers.
    • crashNDK

      public static void crashNDK()
      Function to test native crashes
    • crashNDK2

      public static void crashNDK2()
      Function to test native crashes