public override double GetSurfacePointAltitudeNow(double lat, double lng, bool meters, int targetLevel) { if (level < targetLevel) { int yOffset = 0; if (dataset.Mercator || dataset.BottomsUp) { yOffset = 1; } int xOffset = 0; int xMax = 2; int childIndex = 0; for (int y1 = 0; y1 < 2; y1++) { for (int x1 = 0; x1 < xMax; x1++) { // if (level < (demEnabled ? 12 : dataset.Levels)) if (level < dataset.Levels && level < (targetLevel + 1)) { Tile child = TileCache.GetCachedTile(childrenId[childIndex]); if (child == null || !child.ReadyToRender) { countCreatedForNow++; child = TileCache.GetTileNow(level + 1, x * 2 + ((x1 + xOffset) % 2), y * 2 + ((y1 + yOffset) % 2), dataset, this); childrenId[childIndex] = child.Key; } childIndex++; if (child != null) { if (child.IsPointInTile(lat, lng)) { double retVal = child.GetSurfacePointAltitudeNow(lat, lng, meters, targetLevel); if (retVal != 0) { return(retVal); } else { break; } } } } } } } return(GetAltitudeFromLatLng(lat, lng, meters)); }
public override double GetSurfacePointAltitudeNow(double lat, double lng, bool meters, int targetLevel) { if (level < targetLevel) { int yOffset = 0; if (dataset.Mercator || dataset.BottomsUp) { yOffset = 1; } int xOffset = 0; int xMax = 2; int childIndex = 0; for (int y1 = 0; y1 < 2; y1++) { for (int x1 = 0; x1 < xMax; x1++) { // if (level < (demEnabled ? 12 : dataset.Levels)) if (level < dataset.Levels && level < (targetLevel + 1)) { Tile child = TileCache.GetTileNow(level + 1, x * 2 + ((x1 + xOffset) % 2), y * 2 + ((y1 + yOffset) % 2), dataset, this); childrenId[childIndex++] = child.Key; if (child != null) { if (child.IsPointInTile(lat, lng)) { double retVal = child.GetSurfacePointAltitudeNow(lat, lng, meters, targetLevel); if (retVal != 0) { return(retVal); } else { break; } } } } } } } double alt = GetAltitudeAtLatLng(lat, lng, meters ? 1 : DemScaleFactor); return(alt); }