/// <summary> /// Returns true if the given point has the same name tags and positiong. /// </summary> /// <param name="routePoint"></param> /// <returns></returns> internal bool RepresentsSame(RoutePoint routePoint) { if (routePoint == null) { return(false); } if (this.Longitude == routePoint.Longitude && this.Latitude == routePoint.Latitude && this.Name == routePoint.Name) { if (routePoint.Tags != null || routePoint.Tags.Length == 0) { // there are tags in the other point. if (this.Tags != null || this.Tags.Length == 0) { // there are also tags in this point. if (this.Tags.Length == routePoint.Tags.Length) { // and they have the same number of tags! for (int idx = 0; idx < this.Tags.Length; idx++) { if (this.Tags[idx].Key != routePoint.Tags[idx].Key || this.Tags[idx].Value != routePoint.Tags[idx].Value) { // tags don't equal. return(false); } } return(true); } return(false); } } return(this.Tags != null || this.Tags.Length == 0); } return(false); }
/// <summary> /// Clones this object. /// </summary> /// <returns></returns> public object Clone() { var clone = new RoutePoint(); clone.Latitude = this.Latitude; clone.Longitude = this.Longitude; if (this.Metrics != null) { clone.Metrics = new RouteMetric[this.Metrics.Length]; for (int idx = 0; idx < this.Metrics.Length; idx++) { clone.Metrics[idx] = this.Metrics[idx].Clone() as RouteMetric; } } clone.Name = this.Name; if (this.Tags != null) { clone.Tags = new RouteTags[this.Tags.Length]; for (int idx = 0; idx < this.Tags.Length; idx++) { clone.Tags[idx] = this.Tags[idx].Clone() as RouteTags; } } return(clone); }
/// <summary> /// Returns true if the given point has the same name tags and positiong. /// </summary> /// <param name="routePoint"></param> /// <returns></returns> internal bool RepresentsSame(RoutePoint routePoint) { if (routePoint == null) return false; if (this.Longitude == routePoint.Longitude && this.Latitude == routePoint.Latitude && this.Name == routePoint.Name) { if (routePoint.Tags != null || routePoint.Tags.Length == 0) { // there are tags in the other point. if (this.Tags != null || this.Tags.Length == 0) { // there are also tags in this point. if (this.Tags.Length == routePoint.Tags.Length) { // and they have the same number of tags! for (int idx = 0; idx < this.Tags.Length; idx++) { if (this.Tags[idx].Key != routePoint.Tags[idx].Key || this.Tags[idx].Value != routePoint.Tags[idx].Value) { // tags don't equal. return false; } } return true; } return false; } } return (this.Tags != null || this.Tags.Length == 0); } return false; }
/// <summary> /// Clones this object. /// </summary> /// <returns></returns> public object Clone() { var clone = new RoutePoint(); clone.Latitude = this.Latitude; clone.Longitude = this.Longitude; if (this.Metrics != null) { clone.Metrics = new RouteMetric[this.Metrics.Length]; for (int idx = 0; idx < this.Metrics.Length; idx++) { clone.Metrics[idx] = this.Metrics[idx].Clone() as RouteMetric; } } clone.Name = this.Name; if (this.Tags != null) { clone.Tags = new RouteTags[this.Tags.Length]; for (int idx = 0; idx < this.Tags.Length; idx++) { clone.Tags[idx] = this.Tags[idx].Clone() as RouteTags; } } return clone; }