private static async Task LoadCachedTileAsync(Tile tile, Uri uri, string cacheKey) { var cacheItem = await GetCacheAsync(cacheKey).ConfigureAwait(false); var buffer = cacheItem?.Buffer; if (cacheItem == null || cacheItem.Expiration < DateTime.UtcNow) { var response = await ImageLoader.GetHttpResponseAsync(uri).ConfigureAwait(false); if (response != null) // download succeeded { buffer = response.Buffer; // may be null or empty when no tile available, but still be cached await SetCacheAsync(cacheKey, buffer, GetExpiration(response.MaxAge)).ConfigureAwait(false); } } if (buffer != null && buffer.Length > 0) { var image = await ImageLoader.LoadImageAsync(buffer).ConfigureAwait(false); await tile.Image.Dispatcher.InvokeAsync(() => tile.SetImage(image)); } }
protected override async Task <ImageSource> GetImageAsync(BoundingBox boundingBox) { ImageSource imageSource = null; if (ServerUri != null) { var projectionParameters = ParentMap.MapProjection.WmsQueryParameters(boundingBox, Version); if (!string.IsNullOrEmpty(projectionParameters)) { var uri = GetRequestUri("GetMap" + "&LAYERS=" + Layers + "&STYLES=" + Styles + "&FORMAT=" + Format + "&TRANSPARENT=" + (Transparent ? "TRUE" : "FALSE") + "&" + projectionParameters); try { imageSource = await ImageLoader.LoadImageAsync(uri, false); } catch (Exception ex) { Debug.WriteLine("WmsImageLayer: {0}: {1}", uri, ex.Message); } } } return(imageSource); }
private async Task LoadTileImageAsync(Tile tile, IBuffer buffer) { var tcs = new TaskCompletionSource <object>(); using (var stream = new InMemoryRandomAccessStream()) { await stream.WriteAsync(buffer); stream.Seek(0); await tile.Image.Dispatcher.RunAsync(CoreDispatcherPriority.Low, async() => { try { tile.SetImage(await ImageLoader.LoadImageAsync(stream)); tcs.SetResult(null); } catch (Exception ex) { tcs.SetException(ex); } }); } await tcs.Task; }
private static async Task LoadCachedTile(Tile tile, Uri uri, string cacheKey) { var cacheItem = Cache.Get(cacheKey) as Tuple <byte[], DateTime>; var buffer = cacheItem?.Item1; if (cacheItem == null || cacheItem.Item2 < DateTime.UtcNow) { var response = await ImageLoader.GetHttpResponseAsync(uri).ConfigureAwait(false); if (response != null) // download succeeded { buffer = response.Buffer; // may be null or empty when no tile available, but still be cached cacheItem = Tuple.Create(buffer, GetExpiration(response.MaxAge)); Cache.Set(cacheKey, cacheItem, new CacheItemPolicy { AbsoluteExpiration = cacheItem.Item2 }); } } //else System.Diagnostics.Debug.WriteLine($"Cached: {cacheKey}"); if (buffer != null && buffer.Length > 0) { var image = await ImageLoader.LoadImageAsync(buffer).ConfigureAwait(false); await tile.Image.Dispatcher.InvokeAsync(() => tile.SetImage(image)); } }
protected override async Task <ImageSource> GetImageAsync(BoundingBox boundingBox) { ImageSource imageSource = null; var projectionParameters = ParentMap.MapProjection.WmsQueryParameters(boundingBox); if (ServiceUri != null && !string.IsNullOrEmpty(projectionParameters)) { var uri = GetRequestUri("GetMap&" + projectionParameters); if (uri.IndexOf("LAYERS=", StringComparison.OrdinalIgnoreCase) < 0 && Layers != null) { uri += "&LAYERS=" + Layers; } if (uri.IndexOf("STYLES=", StringComparison.OrdinalIgnoreCase) < 0 && Styles != null) { uri += "&STYLES=" + Styles; } if (uri.IndexOf("FORMAT=", StringComparison.OrdinalIgnoreCase) < 0 && Format != null) { uri += "&FORMAT=" + Format; } imageSource = await ImageLoader.LoadImageAsync(new Uri(uri.Replace(" ", "%20"))); } return(imageSource); }
/// <summary> /// Calls GetImageUri() and asynchronously loads an ImageSource from the returned GetMap URL. /// </summary> protected override async Task <ImageSource> GetImageAsync() { var uri = GetImageUri(); return(uri != null ? await ImageLoader.LoadImageAsync(new Uri(uri.Replace(" ", "%20"))) : null); }
private async Task LoadTileImageAsync(Tile tile, IBuffer buffer) { using (var stream = new InMemoryRandomAccessStream()) { await stream.WriteAsync(buffer); stream.Seek(0); await SetTileImageAsync(tile, () => ImageLoader.LoadImageAsync(stream)).ConfigureAwait(false); } }
/// <summary> /// Loads a tile ImageSource asynchronously from GetUri(x, y, zoomLevel). /// </summary> public virtual async Task <ImageSource> LoadImageAsync(int x, int y, int zoomLevel) { ImageSource imageSource = null; var uri = GetUri(x, y, zoomLevel); if (uri != null) { imageSource = await ImageLoader.LoadImageAsync(uri); } return(imageSource); }
/// <summary> /// Calls GetImageUri() and asynchronously loads an ImageSource from the returned GetMap URL. /// </summary> protected override async Task <ImageSource> GetImageAsync() { if (Layers == null && // get first Layer ServiceUri != null && ServiceUri.ToString().IndexOf("LAYERS=", StringComparison.OrdinalIgnoreCase) < 0) { Layers = (await GetLayerNamesAsync())?.FirstOrDefault() ?? ""; } var uri = GetImageUri(); return(uri != null ? await ImageLoader.LoadImageAsync(new Uri(uri.Replace(" ", "%20"))) : null); }
/// <summary> /// Loads a tile ImageSource asynchronously from GetUri(x, y, zoomLevel). /// </summary> public virtual async Task <ImageSource> LoadImageAsync(int x, int y, int zoomLevel) { ImageSource imageSource = null; var uri = GetUri(x, y, zoomLevel); if (uri != null) { try { imageSource = await ImageLoader.LoadImageAsync(uri, true); } catch (Exception ex) { Debug.WriteLine("TileSource: {0}: {1}", uri, ex.Message); } } return(imageSource); }
/// <summary> /// Loads an ImageSource from the URL returned by GetMapRequestUri(). /// </summary> protected override async Task <ImageSource> GetImageAsync() { ImageSource image = null; if (ServiceUri != null) { if (Layers == null && ServiceUri.ToString().IndexOf("LAYERS=", StringComparison.OrdinalIgnoreCase) < 0) { Layers = (await GetLayerNamesAsync())?.FirstOrDefault() ?? ""; // get first Layer from Capabilities } var uri = GetMapRequestUri(); if (!string.IsNullOrEmpty(uri)) { image = await ImageLoader.LoadImageAsync(new Uri(uri)); } } return(image); }
private static async Task LoadCachedTile(Tile tile, Uri uri, string cacheKey) { var cacheItem = await Cache.GetAsync(cacheKey).ConfigureAwait(false); var buffer = cacheItem?.Item1; if (cacheItem == null || cacheItem.Item2 < DateTime.UtcNow) { var response = await ImageLoader.GetHttpResponseAsync(uri).ConfigureAwait(false); if (response != null) // download succeeded { buffer = response.Buffer; // may be null or empty when no tile available, but still be cached await Cache.SetAsync(cacheKey, buffer, GetExpiration(response.MaxAge)).ConfigureAwait(false); } } //else System.Diagnostics.Debug.WriteLine($"Cached: {cacheKey}"); if (buffer != null && buffer.Length > 0) { await SetTileImage(tile, () => ImageLoader.LoadImageAsync(buffer)).ConfigureAwait(false); } }
/// <summary> /// Loads a tile ImageSource asynchronously from GetUri(x, y, zoomLevel). /// </summary> public virtual async Task <ImageSource> LoadImageAsync(int x, int y, int zoomLevel) { var uri = GetUri(x, y, zoomLevel); return(uri != null ? await ImageLoader.LoadImageAsync(uri) : null); }
protected override async Task <ImageSource> GetImageAsync() { var imageUri = GetImageUri(); return(imageUri != null ? await ImageLoader.LoadImageAsync(imageUri) : null); }
public override async Task <ImageSource> LoadImageAsync(int x, int y, int zoomLevel) { var buffer = await tileData.ReadImageBufferAsync(x, y, zoomLevel); return(buffer != null ? await ImageLoader.LoadImageAsync(buffer) : null); }
/// <summary> /// Loads a tile ImageSource asynchronously from GetUri(x, y, zoomLevel). /// </summary> public virtual Task <ImageSource> LoadImageAsync(int x, int y, int zoomLevel) { var uri = GetUri(x, y, zoomLevel); return(uri != null?ImageLoader.LoadImageAsync(uri) : Task.FromResult((ImageSource)null)); }