Skip to content

ThinkGeoRasterTileSource

Namespace: ThinkGeo.Core

ThinkGeo Cloud raster basemap tiles, authorized by apiKey. The raster twin of ThinkGeoVectorTileSource: the key rides the URL, which makes this a plain URL-template source - no token exchange, no dedicated client.

public class ThinkGeoRasterTileSource : XyzRasterTileSource, System.IDisposable

Inheritance object → RasterTileSource → XyzRasterTileSource → ThinkGeoRasterTileSource
Implements IDisposable

Remarks:

The map type is the same ThinkGeoCloudRasterMapsMapType the classic ThinkGeoRasterMapsAsyncLayer takes, so one vocabulary names the Cloud's raster styles everywhere: the style, its version and its x1/x2 resolution are all in the value, and aerial imagery serves jpg where the cartographic styles serve png.

Properties

ApiKey

Gets the ThinkGeo Cloud apiKey the tiles are asked for with.

public string ApiKey { get; }

Property Value

string

MapType

Gets the map style served, version and resolution included.

public ThinkGeoCloudRasterMapsMapType MapType { get; }

Property Value

ThinkGeoCloudRasterMapsMapType

TileSize

public int TileSize { get; }

Property Value

int

UserAgent

The HTTP user agent sent with every tile request. Public tile servers commonly require an identifying one.

public string UserAgent { get; set; }

Property Value

string

TileCache

Where fetched tiles are kept between runs. Null fetches every time; a public tile service's usage policy usually asks for one.

public RasterTileCache TileCache { get; set; }

Property Value

RasterTileCache

WebProxy

The proxy tile requests go through, or null for the system default.

public IWebProxy WebProxy { get; set; }

Property Value

IWebProxy

TimeoutInSeconds

How long one tile request may take before it is abandoned.

public int TimeoutInSeconds { get; set; }

Property Value

int

IsOpen

public bool IsOpen { get; }

Property Value

bool

TileMatrixSet

Gets the tile grid this source PUBLISHES on: one TileMatrix per zoom level, indexed by zoom. The native grid, or the reprojection target when the tiles are being republished onto another grid.

public TileMatrixSet TileMatrixSet { get; }

Property Value

TileMatrixSet

DrawsFallbackTiles

Gets or sets a value indicating whether a tile of this source, magnified from a shallower zoom, is worth showing while the tiles for the current one arrive.

public bool DrawsFallbackTiles { get; set; }

Property Value

bool

Remarks:

True for imagery, and the default: a magnified aerial is a blurred version of the truth, in the right place, and it beats a hole in the map for the second or two the new tiles take.

Set it false for a source whose tiles are symbols drawn at a fixed size - a WMS of points or labels on nothing. Magnifying one of those does not blur it; it draws the symbols at the wrong size, beside the correctly sized ones in the cells that have already arrived. Measured on a service taking 1.2 s a tile, that is the whole of the transition. With this false the cells simply stay empty until their own tiles come, and whatever is under the layer shows through.

It says nothing about tiles that have arrived. A loaded tile always replaces the zoom beneath it across its whole footprint, transparent pixels included.

https://community.thinkgeo.com/t/bug-gpu-raster-tiles-from-previous-zooms-remain-visible/12479

MinDataZoom

The shallowest zoom level tiles exist at. A subclass that learns the range from the data - an archive header, a service capability - records it through at open.

public int MinDataZoom { get; }

Property Value

int

MaxDataZoom

The deepest zoom level tiles exist at; deeper views reuse this level's tiles (overzoom). See RasterTileSource.MinDataZoom.

public int MaxDataZoom { get; }

Property Value

int

Constructors

ThinkGeoRasterTileSource(string, ThinkGeoCloudRasterMapsMapType)

Initializes a source over the specified ThinkGeo Cloud raster style.

public ThinkGeoRasterTileSource(string apiKey, ThinkGeoCloudRasterMapsMapType mapType)

Parameters

apiKey string
Your ThinkGeo Cloud apiKey.

mapType ThinkGeoCloudRasterMapsMapType
The map style to serve, version and resolution included. Defaults to Light_V2_X1.

Events

SendingHttpRequest

Raised before each tile request is sent. Rewrite the request to inject an API key, a signed URL or authentication headers; set Cancel to skip the request. This is how keyed providers plug in without a dedicated class.

public event EventHandler<SendingHttpRequestMessageEventArgs> SendingHttpRequest;

DataChanged

Raised when the tiles this source serves have changed - by RasterTileSource.Refresh(RectangleShape) - with the ground they changed over, null for all of it. The map listens and asks again.

public event EventHandler<TileSourceDataChangedEventArgs> DataChanged;