internal static IEnumerable <TileInfo> GetTileInfos(ITileSchema schema, Extent extent, string levelId) { // todo: move this method elsewhere. var range = TileTransform.WorldToTile(extent, levelId, schema); // todo: use a method to get tilerange for full schema and intersect with requested tilerange. var startX = Math.Max(range.FirstCol, schema.GetMatrixFirstCol(levelId)); var stopX = Math.Min(range.FirstCol + range.ColCount, schema.GetMatrixFirstCol(levelId) + schema.GetMatrixWidth(levelId)); var startY = Math.Max(range.FirstRow, schema.GetMatrixFirstRow(levelId)); var stopY = Math.Min(range.FirstRow + range.RowCount, schema.GetMatrixFirstRow(levelId) + schema.GetMatrixHeight(levelId)); for (var x = startX; x < stopX; x++) { for (var y = startY; y < stopY; y++) { yield return(new TileInfo { Extent = TileTransform.TileToWorld(new TileRange(x, y), levelId, schema), Index = new TileIndex(x, y, levelId) }); } } }
internal static IEnumerable<TileInfo> GetTileInfos(ITileSchema schema, Extent extent, string levelId) { // todo: move this method elsewhere. var range = TileTransform.WorldToTile(extent, levelId, schema); // todo: use a method to get tilerange for full schema and intersect with requested tilerange. var startX = Math.Max(range.FirstCol, schema.GetMatrixFirstCol(levelId)); var stopX = Math.Min(range.FirstCol + range.ColCount, schema.GetMatrixFirstCol(levelId) + schema.GetMatrixWidth(levelId)); var startY = Math.Max(range.FirstRow, schema.GetMatrixFirstRow(levelId)); var stopY = Math.Min(range.FirstRow + range.RowCount, schema.GetMatrixFirstRow(levelId) + schema.GetMatrixHeight(levelId)); for (var x = startX; x < stopX; x++) { for (var y = startY; y < stopY; y++) { yield return new TileInfo { Extent = TileTransform.TileToWorld(new TileRange(x, y), levelId, schema), Index = new TileIndex(x, y, levelId) }; } } }