Package globus.glmap

Class GLMapManager

java.lang.Object
globus.glmap.GLMapManager

public class GLMapManager extends Object
GLMapManager is a singleton object that manages offline maps
  • Constructor Details

    • GLMapManager

      public GLMapManager()
  • Method Details

    • Initialize

      public static boolean Initialize(@NonNull android.content.Context context, @NonNull String apiKey, @Nullable GLMapManager.ProgressCallback progressCallback)
      Initializes GLMapManager

      During first initialization it copies world map file from app resources to cache directory. Framework uses progressCallback to notify about initialization(copying) progress

      Parameters:
      context - Application context
      apiKey - API key of this application
      progressCallback - initialization progress callback
      Returns:
      true if initialized successfully
    • SetStorages

      public static boolean SetStorages(@NonNull android.content.Context context, @Nullable Object writeStorage, @Nullable Set<Object> customStorages)
      Sets location of caches before initialization. By default caches are set to getFilesDir() of context passed to initialize function, or getExternalFilesDir(null) if external storage is mounted.
      Parameters:
      context - the Context used to find default map locations
      writeStorage - location to write maps (can be String, or CustomMapStorage)
      customStorages - Array of custom storages to read maps (write path will be automatically added)
      Returns:
      Returns true on success
    • UpdateMapList

      public static void UpdateMapList(@Nullable GLMapManager.MapListUpdateCallback complete)
      Updates map list from server
      Parameters:
      complete - runnable, called when map update is complete
    • DownloadDataSet

      @NonNull public static GLMapDownloadTask DownloadDataSet(@NonNull GLMapInfo mapInfo, int dataSet)
      Creates map downloading tasks
      Parameters:
      mapInfo - map info object
      dataSet - data set to download
      Returns:
      download task
    • DownloadDataSets

      @NonNull public static List<GLMapDownloadTask> DownloadDataSets(@NonNull GLMapInfo mapInfo, int dataSets)
      Creates map downloading tasks
      Parameters:
      mapInfo - map info object
      dataSets - data sets to download
      Returns:
      download task
    • DeleteDataSets

      public static void DeleteDataSets(@NonNull GLMapInfo info, int dataSets)
      Delete data sets associated with this map.
      Parameters:
      info - map to delete
      dataSets - data sets to delete
    • DownloadDataSet

      public static long DownloadDataSet(int dataSet, String path, GLMapBBox bbox, GLMapManager.DownloadCallback callback)
      Downloads custom data set
      Parameters:
      dataSet - Data set to download
      path - Full path to file where to download data set
      bbox - BBox of data to download
      callback - callbacks for download task
      Returns:
      taskID that can be used to cancel download
    • CancelDownloadTask

      public static void CancelDownloadTask(long taskID)
      Cancel download task by id
      Parameters:
      taskID - id of task to cancel
    • removeStateListener

      public static void removeStateListener(@NonNull GLMapManager.StateListener val)
      /** Removes listener added by addStateListener
      Parameters:
      val - Listener to remove
      See Also:
    • addStateListener

      public static void addStateListener(@NonNull GLMapManager.StateListener listener)
      Subscribes listener to events about map downloading progress.

      Event name is sent via fieldName
      finished 0 at start, 1 at end of task
      progressDownload sent each time when download progress is changed.

      
       task.addListener(new FieldListener(){
              public void fieldValueChanged(Object obj, String fieldName, Object newValue){
                      ((MapsAdapter)listView.getAdapter()).notifyDataSetChanged();
          }
       });
       
      Parameters:
      listener - that will receive events
      See Also:
    • postOnMain

      public static void postOnMain(@NonNull Runnable runnable)
      Post runnable on main thread
      Parameters:
      runnable - runnable to post
    • getMapDownloadTasks

      @NonNull public static List<GLMapDownloadTask> getMapDownloadTasks()
      Returns:
      Returns the list of created and not finished map download tasks
    • getDownloadTasks

      @Nullable public static List<GLMapDownloadTask> getDownloadTasks(long mapID, int dataSets)
      Returns download tasks for maps
      Parameters:
      mapID - Id of map
      dataSets - data sets of download tasks
      Returns:
      Returns download task for map
    • getDownloadTask

      @Nullable public static GLMapDownloadTask getDownloadTask(long mapID, int dataSet)
      Returns download tasks for maps
      Parameters:
      mapID - Id of map
      dataSet - data set of download task
      Returns:
      Returns download task for map
    • GetChildMaps

      @NonNull public static GLMapInfo[] GetChildMaps()
      Return array of maps including submaps
      Returns:
      Returns array of maps including submaps
    • GetMaps

      @NonNull public static GLMapInfo[] GetMaps()
      Returns:
      Returns array of maps
    • GetMapWithID

      @Nullable public static GLMapInfo GetMapWithID(long mapID)
      Parameters:
      mapID - MapId of map
      Returns:
      Returns GLMapInfo for given mapID
    • AddDataSet

      public static boolean AddDataSet(int dataSet, @Nullable GLMapBBox bbox, @NonNull String path, @Nullable android.content.res.AssetManager assetManager, @Nullable GLMapManager.ProgressCallback progressCallback)
      Adds vector map. Could be used for maps embed into the app resources.
      Parameters:
      dataSet - Type of data set
      bbox - optional bbox of data set
      path - path for custom data set
      assetManager - if not `null` will extract file from assets and cache it
      progressCallback - callback to track progress of caching
      Returns:
      true if success
    • RemoveDataSet

      public static void RemoveDataSet(int dataSet, @NonNull String fileName)
      Removes vector map from map manager. When removed it is safe to delete cached map file.
      Parameters:
      dataSet - Type of data set
      fileName - name of custom map
    • MapsAtPoint

      @Nullable public static GLMapInfo[] MapsAtPoint(@NonNull MapPoint point)
      Returns mapID of vector map that contains given point. If there is no maps that contain given point null is returned.
      Parameters:
      point - point that vector map must contain
      Returns:
      mapID of vector map or null
    • FindNearestMap

      @NonNull public static GLMapInfo FindNearestMap(@NonNull GLMapInfo[] maps, @NonNull MapPoint point)
      Helper function iterates over maps param and returns closest GLMapInfo to the given point.
      Parameters:
      maps - array of map objects
      point - point that vector map must contain
      Returns:
      mapID of vector map
    • SortMaps

      public static void SortMaps(@NonNull GLMapInfo[] maps, @NonNull MapPoint point)
      Sorts array of GLMapInfo by distance from given point
      Parameters:
      maps - array of map objects
      point - center from where distance is calculated
    • SetTileDownloadingAllowed

      public static void SetTileDownloadingAllowed(boolean val)
      Allows GLMapManager to download single tiles when downloaded vector maps does not contain data.
      Parameters:
      val - true to enable tile downloading
    • GetTileDownloadingAllowed

      public static boolean GetTileDownloadingAllowed()
      Returns:
      true if tile downloading allowed
    • SetTileRefreshInterval

      public static void SetTileRefreshInterval(long interval)
      Sets the tile refresh interval for cached tiles. Default: 30 days or 2,592,000 seconds. If the interval is negative, tiles won't be refreshed. Note: Tiles will continue to operate offline even after the refresh interval has passed, although the framework will attempt to download them.
      Parameters:
      interval - Refresh interval in seconds.
    • GetTileRefreshInterval

      public static long GetTileRefreshInterval()
      Retrieves the current refresh interval for cached tiles. A returned value indicates the number of seconds between tile refreshes. A negative value indicates that tiles won't be refreshed. Note: Tiles will continue to operate offline even after the refresh interval has passed, although the framework will attempt to download them.
      Returns:
      The tile refresh interval in seconds.
    • VectorTilesAtBBox

      public static long[] VectorTilesAtBBox(@NonNull GLMapBBox bbox)
      Returns vector tiles that bbox contains or intersects
      Parameters:
      bbox - bbox of area
      Returns:
      vector tiles that bbox contains or intersects
    • NotCachedVectorTilesAtBBox

      public static long[] NotCachedVectorTilesAtBBox(@NonNull GLMapBBox bbox)
      Returns not cached vector tiles that bbox contains or intersects
      Parameters:
      bbox - bbox of area
      Returns:
      not cached vector tiles that bbox contains or intersects
    • CacheTiles

      @Deprecated public static void CacheTiles(@NonNull long[] tiles, @Nullable GLMapManager.TileDownloadProgress progress)
      Deprecated.
      Parameters:
      tiles - tiles to check
      progress - callbacks that will be called when one tile is checked.
    • SetDownloadStatsCallback

      public static void SetDownloadStatsCallback(@Nullable GLMapManager.DownloadStatsCallback callback)
      Callback will be called when subtask is completed or cancelled. It's used to analyze downloading speeds from different locations.
      Parameters:
      callback - callback to call when new stats available
    • GetDownloadedMapsCount

      public static int GetDownloadedMapsCount()
      Returns:
      Returns number of the maps that have any downloaded data
    • ElevationAtPoint

      public static float ElevationAtPoint(double lat, double lon)
      Returns elevation at given point
      Parameters:
      lat - latitude of point
      lon - longitude of point
      Returns:
      elevation at point in meters or NaN if no downloaded data for this point
    • ElevationAtPointAsync

      public static void ElevationAtPointAsync(double lat, double lon, @NonNull GLMapManager.ElevationCallback callback)
      Asynchronous request of elevation
      Parameters:
      lat - latitude of point
      lon - longitude of point
      callback - callback that will be called on completion