private IEnumerable<Tile> GetTiles(double lat, double lon, int level, int w, int h) { int originalPixelx; int originalPixely; TileSystem.LatLongToPixelXy(lat, lon, level, out originalPixelx, out originalPixely); var originalTile = new Tile(lat, lon, originalPixelx, originalPixely, level); var tiles = new List<Tile>(8); const int width = TileSystem.TileWidth; const int height = TileSystem.TileWidth; int tilesOnTop = h / 2; int tilesOnLeft = w / 2; var topLeftTile = GetTileFromPixels(originalTile.XStartPixel - tilesOnTop * width, originalTile.YStartPixel - tilesOnLeft * height, level); for (byte i = 0; i < w; i++) { for (byte j = 0; j < h; j++) { var nextTile = GetTileFromPixels(topLeftTile.XStartPixel + i * width, topLeftTile.YStartPixel + j * height, level); tiles.Add(nextTile); } } return tiles.Where(t => t.Latitude > TileSystem.MinLatitude && t.Latitude < TileSystem.MaxLatitude && t.Longitude > TileSystem.MinLongitude && t.Longitude < TileSystem.MaxLongitude); }
private string GetSoapUrl(Tile tile) { var tileQuad = TileSystem.LatLongToQuadKey(tile.Latitude, tile.Longitude, tile.Level); int origQuad = int.Parse(tileQuad); return String.Format("http://ak.dynamic.t{0}.tiles.virtualearth.net/comp/ch/{1}?mkt=ru-ru&it=G,VE,BX,L,LA&shading=hill&og=33&n=z", origQuad % 10, origQuad); }