public void GetUriTest() { // arrange var request = new BingRequest( "http://t{s}.tiles.virtualearth.net/tiles/r{quadkey}.jpeg?g={apiversion}&token={userkey}", "pindakaas", "555", new [] { "000", "111"}); var tileInfo = new TileInfo { Index = new TileIndex(3, 4, "5") }; // act request.GetUri(tileInfo); // to test the internal server node counter var url = request.GetUri(tileInfo); // assert Assert.True(url.ToString() == "http://t111.tiles.virtualearth.net/tiles/r00211.jpeg?g=555&token=pindakaas"); }
public void GetUriMultiThreadedTest() { // arrange var request = new BingRequest( "http://t{s}.tiles.virtualearth.net/tiles/r{quadkey}.jpeg?g={apiversion}&token={userkey}", "pindakaas", "555", new[] { "000", "111" }); var tileInfo = new TileInfo { Index = new TileIndex(3, 4, "5") }; var urls = new ConcurrentBag<Uri>(); // List is not thread save // act var requests = new List<Func<Uri>>(); for (var i = 0 ; i < 100; i++) requests.Add(() => request.GetUri(tileInfo)); Parallel.ForEach(requests, r => urls.Add(r())); // assert Assert.True(urls.FirstOrDefault(u => u.ToString() == "http://t111.tiles.virtualearth.net/tiles/r00211.jpeg?g=555&token=pindakaas") != null); }
/// <summary> /// Renders the layer /// </summary> /// <param name="g">Graphics object reference</param> /// <param name="map">Map which is rendered</param> public override void OnRender(System.Drawing.Graphics g, Map map) { MapTransform mapTransform = new MapTransform(new PointF((float)Map.Center.X, (float)Map.Center.Y), (float)Map.PixelSize, Map.Image.Width, Map.Image.Height); int level = BruTile.Utilities.GetNearestLevel(schema.Resolutions, Map.PixelSize); IList<TileInfo> tileInfos = schema.GetTilesInView(mapTransform.Extent, level); IRequest requestBuilder = new BingRequest(BingRequest.UrlBing, string.Empty, MapType.Hybrid); var graphics = Graphics.FromImage(Image); // log.DebugFormat("Downloading tiles:"); foreach (var tileInfo in tileInfos) { var bytes = cache.Find(tileInfo.Index); if (bytes == default(byte[])) { try { // log.DebugFormat("row: {0}, column: {1}, level: {2}", tileInfo.Index.Row, tileInfo.Index.Col, tileInfo.Index.Level); var url = requestBuilder.GetUri(tileInfo); bytes = RequestHelper.FetchImage(url); cache.Add(tileInfo.Index, bytes); } catch (WebException e) { log.Error("Can't fetch tiles from the server", e); } } else { log.DebugFormat("row: {0}, column: {1}, level: {2} (cached)", tileInfo.Index.Row, tileInfo.Index.Col, tileInfo.Index.Level); } if (bytes == null) continue; using (var bitmap = new Bitmap(new MemoryStream(bytes))) { var rectangle = mapTransform.WorldToMap(tileInfo.Extent.MinX, tileInfo.Extent.MinY, tileInfo.Extent.MaxX, tileInfo.Extent.MaxY); DrawTile(schema, graphics, bitmap, rectangle); } } }
public void TestIncompleteImage() { using (var map = new SharpMap.Map(new Size(2500, 2500))) { map.BackColor = Color.Magenta; var br = new BingRequest(BingRequest.UrlBing, "", BingMapType.Hybrid); var bts = new BingTileSource(br); var tl = new TileLayer(bts, "TileLayer - " + BingMapType.Hybrid.ToString(), Color.Transparent, true, System.IO.Path.Combine(_fileCacheRoot, "BingStaging")); map.Layers.Add(tl); map.ZoomToBox(new Envelope(829384.331338522, 837200.785470394, 7068020.31417922, 7072526.73926545) /*new Envelope(-239839.49199841652, 78451.759683380573, -37033.0152981899, 106723.52879865949)*/); using (var image = map.GetMap()) { image.Save("TestIncompleteImage.png", ImageFormat.Png); } } }
public BingTileSource( BingRequest bingRequest, IPersistentCache<byte[]> persistentCache = null) : base(new WebTileProvider(bingRequest, persistentCache), new GlobalSphericalMercator("jpg", YAxis.OSM, 1, 19, "Bing")) { }
public BingTileSource( BingRequest bingRequest, IPersistentCache <byte[]> persistentCache = null) : base(new WebTileProvider(bingRequest, persistentCache), new GlobalSphericalMercator("jpg", true, 1, 19, "Bing")) { }
public BingTileSource(BingRequest bingRequest) { Schema = new BingSchema(); Provider = new WebTileProvider(bingRequest); }