public override void GetTile(TileId tileId, out TileRenderable tileRenderable, out bool tileWillNeverBeAvailable) { if (!relevantTileSet.Contains(tileId)) { throw new InvalidOperationException("Cannot get a tile that is not currently set as relevant."); } tileRenderable = null; tileWillNeverBeAvailable = false; var rasterTileCacheValue = rasterTileImageCache.GetValue(tileId); if (rasterTileCacheValue is null) { return; } if (rasterTileCacheValue.Image is null) { tileWillNeverBeAvailable = true; } else { if (tileRenderables.TryGetValue(tileId, out tileRenderable)) { return; } var newToCache = DateTime.UtcNow.Subtract(rasterTileCacheValue.TimeAdded).TotalMilliseconds < 500.0; tileRenderable = CreateTileRenderable(tileId, rasterTileCacheValue.Image, rasterTileCacheValue.TileSubregion, newToCache); tileRenderables.Add(tileId, tileRenderable); } }
public abstract void GetTile( TileId tileId, out TileRenderable tileRenderable, out bool tileWillNeverBeAvailable);