public static ElevationTileCollection GetUniqueTilesForRemoval(long dedId, IEnumerable <DownloadedElevationData> allData, ElevationTileCollection tilesToBeRemoved)
        {
            //Get only tiles, that are not used by another areas
            var tilesForRemoval = new List <ElevationTile>();

            foreach (var tile in tilesToBeRemoved.AsEnumerable())
            {
                var doNotRemove = false;
                foreach (var anotherDedItem in allData)
                {
                    if (anotherDedItem.Id == dedId)
                    {//skip deleted item (but it is actually already removed)
                        continue;
                    }

                    var anotherDedTiles = new ElevationTileCollection(new GpsLocation(anotherDedItem.Longitude, anotherDedItem.Latitude, 0), anotherDedItem.Distance);
                    if (anotherDedTiles.HasElevation(tile.StartLocation, false))
                    {
                        doNotRemove = true;
                        break;
                    }
                }

                if (!doNotRemove)
                {
                    tilesForRemoval.Add(tile);
                }
            }

            return(new ElevationTileCollection(tilesForRemoval));
        }
        public static ElevationTileCollection GetTilesForRemoval(GpsLocation location, int oldDistance, int newDistance)
        {
            var dedTiles    = new ElevationTileCollection(location, newDistance);
            var dedTilesOld = new ElevationTileCollection(location, oldDistance);

            var tilesForRemoval = new List <ElevationTile>();

            foreach (var tile in dedTilesOld.AsEnumerable())
            {
                if (!dedTiles.HasElevation(tile.StartLocation, false))
                {
                    tilesForRemoval.Add(tile);
                }
            }

            return(new ElevationTileCollection(tilesForRemoval));
        }