Esempio n. 1
0
        //1397.08.26
        //why this methods calls multiple time. enable break point to see why
        private void UpdateEdgeLables()
        {
            this._edgeLabelLayer.Items.Clear();

            //if (this._webMercatorGeometry?.GetAllPoints().Length <= 1)
            ////if (this._webMercatorGeometry.NumberOfPoints <= 1 || temp <= 1)
            //{
            //    return;
            //}

            if (Options.IsEdgeLabelVisible)
            {
                var edges = _webMercatorGeometry.GetLineSegments().Select(i => ToEdgeLengthLocatable(i.Start, i.End));

                foreach (var item in edges)
                {
                    _edgeLabelLayer.Items.Add(item);
                }
            }

            if (Options.IsMeasureVisible)
            {
                var point = this._webMercatorGeometry?.GetMeanOrLastPoint();

                if (point == null)
                {
                    return;
                }

                var element = new View.MapMarkers.RectangleLabelMarker(MeasureLabel);

                //do not show length/area when geometry has just one/two point or new part has just one/two point
                if (double.IsNaN(MeasureValue))
                {
                    return;
                }

                element.TooltipValue = MeasureValue.ToInvariantString();

                var offset = _screenToMap(20);

                _edgeLabelLayer.Items.Add(new Locateable(Model.AncherFunctionHandlers.BottomCenter)
                {
                    Element = element,
                    X       = point.X + offset,
                    Y       = point.Y + offset
                });
            }
        }
Esempio n. 2
0
        private Locateable ToEdgeLengthLocatable(Point first, Point second)
        {
            Func <Point, Point> toGeodeticWgs84 = p => MapProjects.WebMercatorToGeodeticWgs84(p);

            var edge = new LineSegment <Point>(first, second);

            var element = new View.MapMarkers.RectangleLabelMarker(edge.GetLengthLabel(toGeodeticWgs84));

            //var offset = _screenToMap(15);

            return(new Locateable(Model.AncherFunctionHandlers.BottomCenter)
            {
                Element = element, X = edge.Middle.X, Y = edge.Middle.Y
            });
        }