上一篇 / 下一篇 2010-12-09 17:13:03 / 个人分类:ArcGIS Desktop
ArcGIS的10引入了几个新的和创新的功能,使您更容易定制和扩展ArcGIS桌面应用,包括新的桌面插件模型。Add-in可以理解为可以包含多种UI和非UI对象的插件包概念。其中支持的对象类型包括(主要分两大类):
第一大类:交互类
按钮和工具:
按钮和工具是简单的控制,可以出现在工具栏按钮或在个案上的菜单。
组合框:
一个组合框提供了一个项目的下拉列表,可以选择提供一个可编辑的输入区域。
多项目:
一个多项目是在运行时动态创建菜单项的集合。多项目菜单上时非常有用的项目不能确定之前,运行时间或项目需要进行修改的基础上,系统状态。
可停靠窗口:
可停靠窗口是浮动或停靠的窗口,在ArcGIS桌面应用程序的显示。可停靠窗口,您可以用任何填充内容分类:图表,幻灯片,视频,迷你地图,或包括ESRI自定义对话框控件包含其他控件。附加在开发可停靠窗口的地方,就开始出现,它是否将与其他可停靠窗口分组相当大的控制。
应用程序扩展:
应用扩展用于其他组件之间的协调活动,如按钮,工具和可停靠窗口,在一个包含加载项。应用程序扩展通常是与存储状态负责外接作为一个整体,并经常用于侦听和响应由宿主应用程序公开的各种活动。应用程序扩展,可配置为自动加载或在加载他们的相关的应用程序时自动启动;扩展也可以被配置为出现在标准ArcGIS的扩展对话框,例如空间分析扩展、网络分析扩展。
编辑器扩展:
编辑器扩展使您可以通过插入框架直接编辑您的编辑工作流程。相对于应用程序扩展,扩展编辑器加载项被加载编辑会话时开始(编辑>“开始编辑)。您可以自定义你的编辑会话的行为(例如,编辑监听事件)通过创建编辑器扩展。
第二大类:容器类
工具栏:
工具栏可以承载按钮,工具,菜单,工具栏和组合框。正如菜单,控件,工具栏上出现可以来自内置的来源,外接源,或两者兼而有之。工具栏可以被配置为自动出现时,最初添加到应用程序,使他们的存在比较明显的用户。
工具盘:
工具盘提供了一种紧凑的方式将一组相关的工具集。显示常用的工具,并且带有一个小的下拉按钮的工具栏,用于访问组中的其他工具。正如菜单,工具工具调色板上出现可以来自内置的来源,外接源,或两者兼而有之。
菜单和上下文菜单:
提出了一个菜单按钮,子,多项目的下拉列表。菜单项可以来自内置的来源,外接源,或两者兼而有之。菜单通常是托管在工具栏,但它们也可能出现上下文(弹出)菜单和菜单根独立。
这些对象都可以在VisualStudio工程里通过添加新项目向导创建。创建过程需要指定一些该对象的属性,例如标题、图标、分类、提示等。不同类型的对象可以设置的属性都不完全一样。这些设置都是静态的,保存在Config.esriaddinx这个XML文件里,高水平的用户可以自己编写修改其内容。上一篇 / 下一篇 2010-12-10 13:46:36 / 个人分类:ArcGIS Desktop
使用VisualStudio的新建工程向导,选择ESRI提供的ArcGIS Add-in模板,这些Add-in模板针对ArcGIS Desktop所包含的每一个应用程序。选择完模板后,系统就会要求我们立即选择第一个添加到Add-in里的对象类型。之后,如果我们有需要往Add-in里添加更多其它的对象类型的话,可以通过添加新项目向导来创建新对象。
Add-in的工程结构十分简单明了。工程里包含一个Config.esriaddinx的XML文件,以及已经添加到工程里的对象代码文件,如Command对象、Tool对象,这里需要注意的是,其中Dockable Windows对象是自定义的UI对象,所以除了可以看到它的代码文件外,还可以看到它的设计时节目,编程体验和WinForm一致。除了上述的这些,还包括一个Images的文件夹,用来保存工程里所使用到的图片,例如Command的图标。
在编写代码,实现自定义对象的逻辑时,有一些内置对象我们是必须要知道的,这些内置对象能够辅助我们编写出安全的代码。
其中一个内置对象就是和我们工程相对应的ArcGIS Desktop程序对象,例如假如我们目前开发的是一个ArcMap Add-in,那么在我们的个工程中就会内置有一个命名为ArcMap的静态类,该静态类包含一些静态对象,如Application、Document、DockableWindowManager、Events,通过这些对象我们就很容易在代码里获得包含Add-in的地图文档实例,继而获得类似Map这些核心编程对象。
另一个内置对象就是ThisAddin,通过该对象,我们可以获得插件的一些元数据信息,例如插件的名称、描述,除此之外,该对象还包含了一个IDs的对象,该对象记录了当前工程所包含的所有对象的ProgID,通过这些ProgID,我们就能方便地创建或查找相对应的对象。这个机制其实和COM的创建对象机制是一致的。
程序在编译后,会生成一个后缀名为esriaddin的文件,该文件是一个zip文件,解压后,我们知道其内部包含一个Config.xml文件、一个Install的文件夹(里面就是我们插件的dll文件)和一个Images的文件夹。默认如果在VisualStudio的运行工程,插件会自动安装到相对应的ArcGIS Desktop应用程序,并启动。如果没有,则手动设置工程属性的调试选项,使用启动外部程序即可,路径设置如C:\Program Files\ArcGIS\Desktop10.0\Bin\ArcMap.exe。
Add-in的部署也十分简单,你可以把编译好的esriaddin文件复制到需要部署的已经安装好ArcGIS Desktop的机器上,又或者把它作为邮件附件发送给别人。在部署电脑上双击esriaddin文件,就要弹出Add-in安装界面,让用户查看该插件的一些元信息,例如作者,是否具有数字签名,然后让用户决定是否安装该插件,安装插件是不需要重启任何ArcGIS Desktop应用程序的。安装完之后,就可以通过相应ArcGIS Desktop应用程序的Add-in Manager来查看已安装的Add-in,也可以通过它来卸载。
一些Add-in所包含的对象,例如Command、Tool、Toolbar,是需要用户通过Customize窗口定制添加到界面上的。Extension对象,则需要用户通过Extensions窗口勾选加载。
上一篇 / 下一篇 2010-12-10 13:50:53 / 个人分类:ArcGIS Desktop
由于目前很多基础在线底图都是切片形式的缓存地图服务,每当我们在ArcMap中使用时,往往会发觉缺少了类似ArcGIS FlexViewer或谷歌地图的比例尺级别缩放滑块,虽然ArcMap支持对这类地图图层进行重采样处理,做到无级别缩放,但这种体验和我们在网页上的访问操作很不一致,客户往往需要点击Zoom to Nearest Cache Resoulution按钮来调整比例尺。为了给客户提供一致的体验,和方便使用。我们这里使用了ArcGIS Desktop 10最新的Addin开发插件模板,为客户定制了一个针对切片地图服务图层的比例尺级别缩放插件。
Addin工程包含一个自定义Command对象和一个自定义的DockableWindow对象。上一篇 / 下一篇 2010-12-20 13:39:34 / 个人分类:ArcGIS Desktop
延迟加载
包含Add-in的程序集默认是在点击菜单或工具栏上的某一项目(例如按钮、命令)才正式加载到应用程序中的,这样做的好处就是节约了应用程序所使用的内存空间。如果要控制对象是否可以被点击,则需要在按钮或命令对象的OnUpdate事件里设置其Enable属性,并在对应的esriaddinx文件里对应的XML节添加onDemand属性,并设置为false,这样Add-in就能在应用程序启动后立即加载,激发OnUpdate事件。
文件结构
Add-in的活动部分,即我们编译后的dll以及一些satellite程序集都会被放到esriaddin压缩包里的Install文件夹中,在第一次启动Add-in时,系统会自动把该文件夹的内容解压出来放到一个系统目录。
Vista/7: C:\Users\<username>\AppData\Local\ESRI\Desktop10.0\AssemblyCache
XP: C:\Documents and Settings\<username>\Local Settings\Application Data\ESRI\Desktop10.0\AssemblyCache
当我们通过Add-in Manager删除Add-in时,上述目录会自动删除。
对于Add-in用到的一些图片,我们可以在esriaddinx配置文件里设置其引用路径,其路径是一个相对路径,根目录就是我们的esriaddin压缩文件。
如果我们有些数据或其他文件需要添加到esriaddin压缩文件中,我们可以设置这些资源的复制到输出目录属性为始终复制。
注册表
在安装有ArcGIS Desktop的电脑上,Windows的注册表里会有几个针对Add-in控制的注册键。
路径HKEY_LOCAL_MACHINE\SOFTWARE\ESRI\Desktop10.0\Settings下:
注册键BlockAddins可设置为多个值:
0:允许加载所有Add-ins。
1:允许加载已签名的Add-ins。
2:只允许加载由ESRI提供的Add-ins。
3:只允许加载由ESRI提供的,并且安装在指定目录下的Add-ins,目录可以通过注册表路径HKEY_LOCAL_MACHINE\SOFTWARE\ESRI\Desktop10.0\Settings\AddInFolders指定。
4:不允许加载任何Add-ins。