private List <Tile> MakeTileMatrix(int levelOfDetail, List <List <AltitudeResponse> > altitudes) { List <Tile> tileMatrix = new List <Tile>(); foreach (var line in altitudes) { foreach (var point in line) { TileSystem.LatLongToPixelXY(point.Location.Lat, point.Location.Lng, levelOfDetail, out var pixelX, out var pixelY); TileSystem.PixelXYToTileXY(pixelX, pixelY, out var tileX, out var tileY); TileSystem.MapPixelXYToTileInnerPixelXY(pixelX, pixelY, out var tileInnerX, out var tileInnerY); MapPoint mapPoint = new MapPoint(tileInnerX, tileInnerY, point.Elevation); if (mapPoint.Z > 0) { Tile tile = tileMatrix.FirstOrDefault(t => t.TileX == tileX && t.TileY == tileY); if (tile == null) { tile = new Tile(levelOfDetail, tileX, tileY); tileMatrix.Add(tile); } tile.Points.Add(mapPoint); } } } return(tileMatrix); }