Ejemplo n.º 1
0
        /// <summary>
        /// Method to place the street direction symbols
        /// </summary>
        /// <param name="map"></param>
        /// <param name="lineString"></param>
        /// <param name="graphics"></param>
        private void OnRenderInternal(SharpMap.MapViewport map, GeoAPI.Geometries.ILineString lineString,
                                      System.Drawing.Graphics graphics)
        {
            var length = lineString.Length;
            var lil    = new NetTopologySuite.LinearReferencing.LengthIndexedLine(lineString);

            if (length < RepeatInterval + ArrowLength)
            {
                var start = System.Math.Max(0, (length - ArrowLength) / 2);
                var end   = System.Math.Min(length, (length + ArrowLength) / 2);
                var arrow = (GeoAPI.Geometries.ILineString)lil.ExtractLine(start, end);

                RenderArrow(map, graphics, arrow);

                return;
            }

            var numArrows = (int)((lineString.Length - ArrowLength) / RepeatInterval);
            var offset    = (lineString.Length - numArrows * RepeatInterval - ArrowLength) * 0.5;

            while (offset + ArrowLength < lineString.Length)
            {
                var arrow = (GeoAPI.Geometries.ILineString)lil.ExtractLine(offset, offset + ArrowLength);
                RenderArrow(map, graphics, arrow);
                offset += RepeatInterval;
            }
        }
Ejemplo n.º 2
0
            protected override void OnRenderInternal(SharpMap.MapViewport map, GeoAPI.Geometries.IPolygon polygon, System.Drawing.Graphics g)
            {
                var pt = polygon.Centroid;

                g.RenderingOrigin =
                    System.Drawing.Point.Truncate(map.WorldToImage(pt.Coordinate));
                base.OnRenderInternal(map, polygon, g);
            }
Ejemplo n.º 3
0
        public override void Begin(System.Drawing.Graphics g, SharpMap.MapViewport map, int aproximateNumberOfGeometries)
        {
            base.Begin(g, map, aproximateNumberOfGeometries);

            //Adjust Arrow cap
            var size = (float)(ArrowLength / 5 / map.PixelWidth);

            ArrowPen.CustomEndCap = new System.Drawing.Drawing2D.AdjustableArrowCap(size, size);
        }
Ejemplo n.º 4
0
        /// <summary>
        /// Method to render the arrow
        /// </summary>
        /// <param name="map">The map</param>
        /// <param name="graphics">The graphics object</param>
        /// <param name="arrow">The arrow</param>
        private void RenderArrow(SharpMap.MapViewport map, System.Drawing.Graphics graphics, GeoAPI.Geometries.ILineString arrow)
        {
            var pts = new System.Drawing.PointF[arrow.Coordinates.Length];

            for (var i = 0; i < pts.Length; i++)
            {
                pts[i] = map.WorldToImage(arrow.GetCoordinateN(i));
            }
            graphics.DrawLines(ArrowPen, pts);
        }
Ejemplo n.º 5
0
 public void Render(SharpMap.MapViewport map, GeoAPI.Geometries.ILineal geometry, System.Drawing.Graphics graphics)
 {
     if (geometry is GeoAPI.Geometries.IMultiLineString)
     {
         var mls = (GeoAPI.Geometries.IMultiLineString)geometry;
         for (var i = 0; i < mls.Count; i++)
         {
             OnRenderInternal(map, (GeoAPI.Geometries.ILineString)mls.GetGeometryN(i), graphics);
         }
         return;
     }
     OnRenderInternal(map, (GeoAPI.Geometries.ILineString)geometry, graphics);
 }
Ejemplo n.º 6
0
 public override void Begin(System.Drawing.Graphics g, SharpMap.MapViewport map, int aproximateNumberOfGeometries)
 {
     base.Begin(g, map, aproximateNumberOfGeometries);
     _oldRenderOrigin = g.RenderingOrigin;
 }
Ejemplo n.º 7
0
 public override void End(System.Drawing.Graphics g, SharpMap.MapViewport map)
 {
     g.RenderingOrigin = _oldRenderOrigin;
 }