Class TileFactory<T,​U extends Tile<T>>

  • Direct Known Subclasses:
    AbstractTileFactory

    public abstract class TileFactory<T,​U extends Tile<T>>
    extends Object
    A class that can produce tiles and convert coordinates to pixels
    Author:
    joshy, Frantisek Post
    • Constructor Detail

      • TileFactory

        protected TileFactory​(TileFactoryInfo info)
        Creates a new instance of TileFactory
        Parameters:
        info - a TileFactoryInfo to configure this TileFactory
    • Method Detail

      • getTileSize

        public int getTileSize​(int zoom)
        Gets the size of an edge of a tile in pixels at the current zoom level. Tiles must be square.
        Parameters:
        zoom - the current zoom level
        Returns:
        the size of an edge of a tile in pixels
      • getMapSize

        public Dimension getMapSize​(int zoom)
        Returns a Dimension containing the width and height of the map, in tiles at the current zoom level. So a Dimension that returns 10x20 would be 10 tiles wide and 20 tiles tall. These values can be multipled by getTileSize() to determine the pixel width/height for the map at the given zoom level
        Parameters:
        zoom - the current zoom level
        Returns:
        the size of the world bitmap in tiles
      • getTile

        public abstract U getTile​(int x,
                                  int y,
                                  int zoom)
        Return the Tile at a given TilePoint and zoom level
        Parameters:
        tilePoint - the tilePoint
        zoom - the current zoom level
        Returns:
        the tile that is located at the given tilePoint for this zoom level. For example, if getMapSize() returns 10x20 for this zoom, and the tilePoint is (3,5), then the appropriate tile will be located and returned. This method must not return null. However, it can return dummy tiles that contain no data if it wants. This is appropriate, for example, for tiles which are outside of the bounds of the map and if the factory doesn't implement wrapping.
      • pixelToGeo

        public GeoPosition pixelToGeo​(Point2D pixelCoordinate,
                                      int zoom)
        Convert a pixel in the world bitmap at the specified zoom level into a GeoPosition
        Parameters:
        pixelCoordinate - a Point2D representing a pixel in the world bitmap
        zoom - the zoom level of the world bitmap
        Returns:
        the converted GeoPosition
      • geoToPixel

        public Point2D geoToPixel​(GeoPosition c,
                                  int zoomLevel)
        Convert a GeoPosition to a pixel position in the world bitmap a the specified zoom level.
        Parameters:
        c - a GeoPosition
        zoom - the zoom level to extract the pixel coordinate for
        Returns:
        the pixel point
      • getInfo

        public TileFactoryInfo getInfo()
        Get the TileFactoryInfo describing this TileFactory
        Returns:
        a TileFactoryInfo
      • startLoading

        protected abstract void startLoading​(U tile)
        Override this method to load the tile using, for example, an ExecutorService.
        Parameters:
        tile - The tile to load.
      • clearQueueAndStopLoading

        public abstract void clearQueueAndStopLoading()
        Method to stop the tile runner and clear all caches