Example #1
0
        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);
        }
Example #2
0
        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]);
        }