public bool CheckIntersection(LatLonAlt location) { if (layers.Count == 0) { return(false); } if (layers[layers.Count - 1] == null) { return(false); } WarpedDataSource2D <double> dataSource = null;//layers[layers.Count - 1].dataSource; if (dataSource == null) { return(false); } double isolineLayer; bool foundVal = Search(dataSource, new Point(location.LongitudeDegrees, location.LatitudeDegrees), out isolineLayer); if (foundVal) { host.Geometry.RemoveGeometry("RunningLine", "rl"); IsolineCollection collection = isolineBuilder.Build(isolineLayer); LevelLine segment = collection.Lines[0]; //runningIsoline.LineColor = palette.GetColor(segment.Value01); //runningIsoline.Segment = segment; //List<Coordinate2D> points = new List<Coordinate2D>(); //points.Add(new Coordinate2D(segment.StartPoint.X, segment.StartPoint.Y)); //foreach (Point point in segment.OtherPoints) //{ // points.Add(new Coordinate2D(point.X, point.Y)); //} //PolyInfo style = PolyInfo.DefaultPolyline; //style.LineColor = palette.GetColor(segment.Value01); //style.LineWidth = 5; //runningLine = new PolylineGeometry("RunningLine", "rl", new Polyline2(Wgs84CoordinateReferenceSystem.Instance, // Coordinate2DCollection.CreateUnsafe(points.ToArray())), style); } return(foundVal); }
private void AddDataSource(IDataSource2D <double> field, Guid guid) { List <PolylineGeometry> geometry = new List <PolylineGeometry>(); List <VisualPushpin> labels = new List <VisualPushpin>(); isolineBuilder.DataSource = field; IsolineCollection collection = isolineBuilder.Build(); annotater.WayBeforeText = 20.0; foreach (LevelLine segment in collection.Lines) { List <Coordinate2D> points = new List <Coordinate2D>(); points.Add(new Coordinate2D(segment.StartPoint.X, segment.StartPoint.Y)); foreach (Point point in segment.OtherPoints) { points.Add(new Coordinate2D(point.X, point.Y)); } PolyInfo style = PolyInfo.DefaultPolyline; Color color = palette.GetColor(segment.Value01); style.LineColor = System.Drawing.Color.FromArgb(color.A, color.R, color.G, color.B); geometry.Add(new PolylineGeometry(guid.ToString(), Guid.NewGuid().ToString(), new Polyline2(Wgs84CoordinateReferenceSystem.Instance, Coordinate2DCollection.CreateUnsafe(points.ToArray())), style)); } foreach (IsolineTextLabel label in annotater.Annotate(collection, new Rect())) { labels.Add(new VisualPushpin(30, 30, label.Text, LatLonAlt.CreateUsingDegrees(label.Position.Y, label.Position.X, 0), this, Guid.NewGuid().ToString())); } layers.Add(new IsolinesLayer() { Geometry = geometry, IsVisible = true, Guid = guid, Labels = labels }); AddLayerToHost(layers[layers.Count - 1]); }