Beispiel #1
0
        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);
            }
        }
Beispiel #2
0
 public abstract void GetTile(
     TileId tileId,
     out TileRenderable tileRenderable,
     out bool tileWillNeverBeAvailable);