예제 #1
0
파일: Place.cs 프로젝트: soleon/Travlexer
 /// <summary>
 ///     Initializes a new instance of the <see cref="Place" /> class.
 /// </summary>
 /// <param name="location"> The geographical location of this pin. </param>
 /// <param name="id"> The ID of this place. </param>
 /// <param name="name"> The name of this place. </param>
 public Place(Location location, Guid id = default(Guid), string name = DefaultName)
 {
     if (location == null)
     {
         throw new ArgumentNullException("location", "Location is required in order to create a place.");
     }
     Location = location;
     Id = id == default(Guid) ? Guid.NewGuid() : id;
     Name = name;
 }
예제 #2
0
 public bool Equals(Location other)
 {
     if (ReferenceEquals(null, other))
     {
         return false;
     }
     if (ReferenceEquals(this, other))
     {
         return true;
     }
     return other.Latitude.Equals(Latitude) && other.Longitude.Equals(Longitude);
 }
예제 #3
0
 /// <summary>
 ///     Decodes the encoded polyline points string.
 /// </summary>
 /// <remarks>
 ///     Translated from the Original Java code located at http://www.geekyblogger.com/2010/12/decoding-polylines-from-google-maps.html.
 /// </remarks>
 public static List<Location> DecodePolylinePoints(String encodedPoints)
 {
     var poly = new List<Location>();
     var chars = encodedPoints.ToCharArray();
     int index = 0, len = encodedPoints.Length;
     int lat = 0, lng = 0;
     while (index < len)
     {
         int b, shift = 0, result = 0;
         do
         {
             b = chars[index++] - 63;
             result |= (b & 0x1f) << shift;
             shift += 5;
         } while (b >= 0x20);
         var dlat = ((result & 1) != 0 ? ~(result >> 1) : (result >> 1));
         lat += dlat;
         shift = 0;
         result = 0;
         do
         {
             b = chars[index++] - 63;
             result |= (b & 0x1f) << shift;
             shift += 5;
         } while (b >= 0x20);
         var dlng = ((result & 1) != 0 ? ~(result >> 1) : (result >> 1));
         lng += dlng;
         var p = new Location
         {
             Latitude = lat/1E5,
             Longitude = lng/1E5
         };
         poly.Add(p);
     }
     return poly;
 }
예제 #4
0
 /// <summary>
 ///     Called when <see cref="CommandAddPlace" /> is executed.
 /// </summary>
 private void OnAddPlace(Location location)
 {
     VisualState.Value = VisualStates.Default;
     var newPlace = _data.AddNewPlace(location);
     newPlace.Color = Data.DataExtensions.GetRandomElementColor();
 }