You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							147 lines
						
					
					
						
							3.0 KiB
						
					
					
				
			
		
		
	
	
							147 lines
						
					
					
						
							3.0 KiB
						
					
					
				| using System;
 | |
| 
 | |
| namespace Mapbox.Map
 | |
| {
 | |
| 	/// <summary>
 | |
| 	///     Unwrapped tile identifier in a slippy map. Similar to <see cref="CanonicalTileId"/>,
 | |
| 	///     but might go around the globe.
 | |
| 	/// </summary>
 | |
| 	public struct UnwrappedTileId : IEquatable<UnwrappedTileId>
 | |
| 	{
 | |
| 		/// <summary> The zoom level. </summary>
 | |
| 		public readonly int Z;
 | |
| 
 | |
| 		/// <summary> The X coordinate in the tile grid. </summary>
 | |
| 		public readonly int X;
 | |
| 
 | |
| 		/// <summary> The Y coordinate in the tile grid. </summary>
 | |
| 		public readonly int Y;
 | |
| 
 | |
| 		/// <summary>
 | |
| 		///     Initializes a new instance of the <see cref="UnwrappedTileId"/> struct,
 | |
| 		///     representing a tile coordinate in a slippy map that might go around the
 | |
| 		///     globe.
 | |
| 		/// </summary>
 | |
| 		/// <param name="z">The z coordinate.</param>
 | |
| 		/// <param name="x">The x coordinate.</param>
 | |
| 		/// <param name="y">The y coordinate.</param>
 | |
| 		public UnwrappedTileId(int z, int x, int y)
 | |
| 		{
 | |
| 			this.Z = z;
 | |
| 			this.X = x;
 | |
| 			this.Y = y;
 | |
| 		}
 | |
| 
 | |
| 		/// <summary> Gets the canonical tile identifier. </summary>
 | |
| 		/// <value> The canonical tile identifier. </value>
 | |
| 		public CanonicalTileId Canonical
 | |
| 		{
 | |
| 			get
 | |
| 			{
 | |
| 				return new CanonicalTileId(this);
 | |
| 			}
 | |
| 		}
 | |
| 
 | |
| 		/// <summary>
 | |
| 		///     Returns a <see cref="T:System.String"/> that represents the current
 | |
| 		///     <see cref="T:Mapbox.Map.UnwrappedTileId"/>.
 | |
| 		/// </summary>
 | |
| 		/// <returns>
 | |
| 		///     A <see cref="T:System.String"/> that represents the current
 | |
| 		///     <see cref="T:Mapbox.Map.UnwrappedTileId"/>.
 | |
| 		/// </returns>
 | |
| 		public override string ToString()
 | |
| 		{
 | |
| 			return this.Z + "/" + this.X + "/" + this.Y;
 | |
| 		}
 | |
| 
 | |
| 		public bool Equals(UnwrappedTileId other)
 | |
| 		{
 | |
| 			return this.X == other.X && this.Y == other.Y && this.Z == other.Z;
 | |
| 		}
 | |
| 
 | |
| 		public override int GetHashCode()
 | |
| 		{
 | |
| 			return (X << 6) ^ (Y << 16) ^ (Z << 8);
 | |
| 		}
 | |
| 
 | |
| 		public override bool Equals(object obj)
 | |
| 		{
 | |
| 			return this.X == ((UnwrappedTileId)obj).X && this.Y == ((UnwrappedTileId)obj).Y && this.Z == ((UnwrappedTileId)obj).Z;
 | |
| 		}
 | |
| 
 | |
| 		public static bool operator ==(UnwrappedTileId a, UnwrappedTileId b)
 | |
| 		{
 | |
| 			return a.X == b.X && a.Y == b.Y && a.Z == b.Z;
 | |
| 		}
 | |
| 
 | |
| 		public static bool operator !=(UnwrappedTileId a, UnwrappedTileId b)
 | |
| 		{
 | |
| 			return !(a == b);
 | |
| 		}
 | |
| 
 | |
| 		public UnwrappedTileId North
 | |
| 		{
 | |
| 			get
 | |
| 			{
 | |
| 				return new UnwrappedTileId(Z, X, Y - 1);
 | |
| 			}
 | |
| 		}
 | |
| 
 | |
| 		public UnwrappedTileId East
 | |
| 		{
 | |
| 			get
 | |
| 			{
 | |
| 				return new UnwrappedTileId(Z, X + 1, Y);
 | |
| 			}
 | |
| 		}
 | |
| 
 | |
| 		public UnwrappedTileId South
 | |
| 		{
 | |
| 			get
 | |
| 			{
 | |
| 				return new UnwrappedTileId(Z, X, Y + 1);
 | |
| 			}
 | |
| 		}
 | |
| 
 | |
| 		public UnwrappedTileId West
 | |
| 		{
 | |
| 			get
 | |
| 			{
 | |
| 				return new UnwrappedTileId(Z, X - 1, Y);
 | |
| 			}
 | |
| 		}
 | |
| 
 | |
| 		public UnwrappedTileId NorthEast
 | |
| 		{
 | |
| 			get
 | |
| 			{
 | |
| 				return new UnwrappedTileId(Z, X + 1, Y - 1);
 | |
| 			}
 | |
| 		}
 | |
| 
 | |
| 		public UnwrappedTileId SouthEast
 | |
| 		{
 | |
| 			get
 | |
| 			{
 | |
| 				return new UnwrappedTileId(Z, X + 1, Y + 1);
 | |
| 			}
 | |
| 		}
 | |
| 
 | |
| 		public UnwrappedTileId NorthWest
 | |
| 		{
 | |
| 			get
 | |
| 			{
 | |
| 				return new UnwrappedTileId(Z, X - 1, Y - 1);
 | |
| 			}
 | |
| 		}
 | |
| 
 | |
| 		public UnwrappedTileId SouthWest
 | |
| 		{
 | |
| 			get
 | |
| 			{
 | |
| 				return new UnwrappedTileId(Z, X - 1, Y + 1);
 | |
| 			}
 | |
| 		}
 | |
| 	}
 | |
| }
 | |
| 
 |