zoukankan      html  css  js  c++  java
  • ArcGIS Pro二次开发-地图上画线

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using ArcGIS.Core.CIM;
    using ArcGIS.Core.Data;
    using ArcGIS.Core.Geometry;
    using ArcGIS.Desktop.Catalog;
    using ArcGIS.Desktop.Core;
    using ArcGIS.Desktop.Editing;
    using ArcGIS.Desktop.Extensions;
    using ArcGIS.Desktop.Framework;
    using ArcGIS.Desktop.Framework.Contracts;
    using ArcGIS.Desktop.Framework.Dialogs;
    using ArcGIS.Desktop.Framework.Threading.Tasks;
    using ArcGIS.Desktop.Mapping;
    using System.Windows.Input;
    
    
    
    
    
    namespace ProAppModule1
    {
        internal class MapToolSelect : MapTool
        {
            private IDisposable _graphic = null;
    
            private CIMLineSymbol _lineSymbol = null;
    
            public MapToolSelect()
            {
    
                IsSketchTool = true;
    
                SketchType = SketchGeometryType.Line; //Sketch a line geometry
    
                SketchOutputMode = SketchOutputMode.Map;
    
            }
    
    
    
            protected override Task OnToolDeactivateAsync(bool hasMapViewChanged)
            {
    
                if (_graphic != null)
    
                    _graphic.Dispose();//Clear out the old overlay
    
                _graphic = null;
    
                return base.OnToolDeactivateAsync(hasMapViewChanged);
    
            }
    
    
    
            /// <summary>
    
            /// Occurs when the tool is activated.
    
            /// </summary>
    
            /// <param name="hasMapViewChanged">A value indicating if the active <see cref="T:ArcGIS.Desktop.Mapping.MapView"/> has changed.</param>
    
            /// <returns>
    
            /// A Task that represents a tool activation event.
    
            /// </returns>
    
            protected async override Task OnToolActivateAsync(bool hasMapViewChanged)
            {
    
                if (_lineSymbol == null)
                {
    
                    _lineSymbol = await Module1.CreateLineSymbolAsync();
    
                }
    
                this.SketchSymbol = _lineSymbol.MakeSymbolReference();
    
            }
    
    
    
            protected override void OnToolMouseDown(MapViewMouseButtonEventArgs e)
            {
    
                if (_graphic != null)
                {
    
                    _graphic.Dispose();//Clear out the old overlay
    
                    _graphic = null;
    
                }
    
                base.OnToolMouseDown(e);
    
            }
    
    
    
            protected async override Task<bool> OnSketchCompleteAsync(Geometry geometry)
            {
    
                _graphic = await this.AddOverlayAsync(geometry, _lineSymbol.MakeSymbolReference());
    
                return true;
    
            }
    
    
    
        }
    
    }
    ==========
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Windows.Input;
    using System.Threading.Tasks;
    using ArcGIS.Core.CIM;
    using ArcGIS.Core.Data;
    using ArcGIS.Core.Geometry;
    using ArcGIS.Desktop.Catalog;
    using ArcGIS.Desktop.Core;
    using ArcGIS.Desktop.Editing;
    using ArcGIS.Desktop.Extensions;
    using ArcGIS.Desktop.Framework;
    using ArcGIS.Desktop.Framework.Contracts;
    using ArcGIS.Desktop.Framework.Dialogs;
    using ArcGIS.Desktop.Framework.Threading.Tasks;
    using ArcGIS.Desktop.Mapping;
    
    namespace ProAppModule1
    {
        internal class Module1 : Module
        {
            private static Module1 _this = null;
    
            /// <summary>
            /// Retrieve the singleton instance to this module here
            /// </summary>
            public static Module1 Current
            {
                get
                {
                    return _this ?? (_this = (Module1)FrameworkApplication.FindModule("ProAppModule1_Module"));
                }
            }
    
            #region Overrides
            /// <summary>
            /// Called by Framework when ArcGIS Pro is closing
            /// </summary>
            /// <returns>False to prevent Pro from closing, otherwise True</returns>
            protected override bool CanUnload()
            {
                //TODO - add your business logic
                //return false to ~cancel~ Application close
                return true;
            }
            internal static Task<CIMLineSymbol> CreateLineSymbolAsync()
            {
    
                return QueuedTask.Run(() => {
    
                    var lineStroke = SymbolFactory.Instance.ConstructStroke(ColorFactory.Instance.RedRGB, 4.0);
    
                    var marker = SymbolFactory.Instance.ConstructMarker(ColorFactory.Instance.RedRGB, 12, SimpleMarkerStyle.Circle);
    
                    marker.MarkerPlacement = new CIMMarkerPlacementOnVertices()
                    {
    
                        AngleToLine = true,
    
                        PlaceOnEndPoints = true,
    
                        Offset = 0
    
                    };
    
                    return new CIMLineSymbol()
                    {
    
                        SymbolLayers = new CIMSymbolLayer[2] { marker, lineStroke }
    
                    };
    
                });
    
            }
    
    
    
            #endregion Overrides
    
        }
    }
  • 相关阅读:
    ★★★5230打字慢的解决方法...绝对有用...只需要在手机上轻微的设置一下(转)
    IT公司中最流行的10种编程语言(转)
    Windows下安装Object C开发环境,及Hello Word(转)
    [图]AMD的CPU在VirtualBox中安装Mac OS X 10.6(转)
    How_to_Handle_Pointer_Events_in_a_Custom_Control(转)
    Cannot obtain license for Compiler (feature compiler) with license version >= 2.2(转)
    GNUstep Gorm第一个视窗程序,第一个图形界面,第一个helloworld gui(转)
    Symbian源码分析(转)
    Symbian计算MD5(转)
    Does not support program for platform "WINSCW"
  • 原文地址:https://www.cnblogs.com/gisoracle/p/12464553.html
Copyright © 2011-2022 走看看