ArcGIS Pro SDK 1.4
来源:互联网 发布:打印机网络共享器 编辑:程序博客网 时间:2024/05/22 10:44
Pro SDK 1.4现在已经发布使用,新的SDK包含了许多新特性,伴随着新版本的发布,SDK可以在 Visual Studio中安装( Visual Studio Gallery ,推荐方法),也可以在myesri中下载使用。
接下来简要介绍一下1.4 SDK里一些增强的功能:
配置—-新的添加项模式/模板,允许用户自定义 Pro UI/UX,本质上,可以设计任何的添加项和所有符合添加条件的所有性能。
Light/dark主题风格—伴随着Pro 1.4的light/dark主题功能,SDK允许用户去设计添加项和布局为了最佳的可视性。
API 的提升—关于数据库连接和SQL语法有新的类和方法,水平或者垂直基准,还有一些新的控件。
新的代码示例和指导—这些可以在社区网站和维基找到相关示例(以下会介绍)
更多详细的介绍大家还是去看API参考文档,那里包含了更多API和SDK新发布的亮点,以及所有新添加的完整的列表。
下面贴一下可供学习的地址:
开发者:https://developers.arcgis.com/extending-the-platform/
github的示例:https://github.com/esri/arcgis-pro-sdk-community-samples
API参考指南:http://pro.arcgis.com/en/pro-app/sdk/api-referece/
GEONET:https://geonet.esri.com/groups/arcgis-pro-sdk
搭建环境:ArcGIS Pro 1.4+ArcGIS Pro SDK 1.4 for.NET(http://www.esri.com/)
Visual Studio2013或者Visual Studio2015(https://www.microsoft.com/zh-cn)
可以构建第一个示例练练手,这里就不详细介绍了,官网上面非常详细全面,大家可以去看看
接下来进入正题
Pro 1.4的打开界面有很多种,简单介绍几种
1、按照工程打开
2、按照地图选择
3、按照行政区域
以上加载的是示例,由于大家安装Pro的时候大部分都不是按照默认路径安装,运行程序的时候可能会出现如下问题,如图
原因是默认的csproj文件里默认的路径是安装Pro的时候默认的安装位置,用记事本打开csproj文件,把你安装Pro的位置改进去就可以解决了,如图
有很多处,这里就不一一标识。
我们来构建一个示例:
这里我命名为GeocodeConfiguration,
新建一个文件夹,命名为Controls,下面新建一个User control,这里我将它命名为GeocodeUI,自定义一个UI,可以按照你的任何想法来进行设计,界面如图
这里我添加了一个Button控件,用于访问添加的地图的地址
接下来自定义一个启动界面,这里我命名为GeocodeStartPage,仍然是可以根据你的任何想法设计出你想要的界面,我们加入刚才的User control,界面如图
新建一个.cs文件,这里命名为GeocodeViewModel,我们可以写入Find Location的address来作为默认的查询地址
打开ConfigurationManager.cs文件,在OnShowSplashScreen的覆盖方法中,我们可以重写默认的方法以返回一个System.windows.window来作为我们得自定义启动界面,管理布局模板将在”SplashScreen.xaml”中添加默认实现的启动界面窗口,我们也可以进行自定义,删除回调或者返回NULL以保留SplashScreen,这里我把刚才的GeocodeStartPage界面作为自定义界面,代码如下:
private GeocodeStartPageViewModel _vm; /// <summary> /// Pro启动之前的界面.取代默认的启动界面 /// </summary> /// <returns> 实现控件和启动界面的功能. ///如果自定义的界面不能使用. 那么将会显示默认的界面.</returns> protected override System.Windows.FrameworkElement OnShowStartPage() { if (_vm == null) { _vm = new GeocodeStartPageViewModel(); } var page = new GeocodeStartPage(); page.DataContext = _vm; return page; }
我们也可以添加BUTTON,自定义想要的任何功能,接下来我们添加一个Button来实现一个简单的功能,这里命名为WorkflowButton
在它的.cs文件里面我们写入这段代码:
internal class WorkflowButton1 : Button { protected override void OnClick() { MessageBox.show("Test"); }}
打开config.daml,在这里我们可以看到刚才加入的Button的信息
修改控件,我这里修改为CUSTOM.
我们运行一下,界面如图
默认的菜单栏工具栏是这个样子的,
我们可以把这些工具自由组合,例如把不需要的去掉,需要的整合在一个Tab或者group里面,也可以把Tab、Group、工具的名称自定义改名字,我们简单做一个示例,效果就是把默认菜单栏全部消除,只留下刚才我们自定义的CUSTOM控件。
打开ConfigurationManager.cs,在ConfigurationManager中,添加一个事件响应函数OnUpdataDatabase,覆盖DAML数据库,代码如下:
#region override daml database protected override void onupdatedatabase(xdocument database) { var nsp = database.root.name.namespace; // 选择所有的Tab元素 var tabelements = from seg in database.root.descendants(nsp + "tab") select seg;// 把所有需要移动的元素聚集在一起 var elements = new hashset<xelement>(); foreach (var tabelement in tabelements) { // 跳过根和后台元素 if (tabelement.parent == null) continue; var id = tabelement.attribute("id"); if (id == null || id.Value.StartsWith(“Geocodeconfiguration”)) continue; elements.add(tabelement); } // 移动 foreach (var element in elements) { element.remove(); } } #endregion
需要注意的是,OnUpdataDatabase使用单个参数XDocument database,在启动期间,来自Pro(bin\Extensions)中所被检测到的add-in和布局的所有的DAML文件都合并到单个DAML中,所以在编辑此XML文件的时候要小心,它定义了整个程序的UI
我们来运行一下,界面如图:
如果我们想要访问一个新的地址,默认是需要新打开一个工程然后访问,这里我们自定义一个Geocode来实现连续访问的效果,默认如图
我们新建立一个Tab,这里命名为GeocodeBackstageTab,
打开config.daml,我们可以看到刚才加入的BackstageTab的信息,
这里我把它的caption改为Geocode,placewith改为esri_core_SaveProjectButton
打开它的设计界面,加入这样一句代码
<Control:GeocodeUI Address="{Binding Address}"></Control:GeocodeUI>
打开它的ViewModel.cs,看到如下代码:
private string _tabHeading = "Tab Title"; public string TabHeading { get { return _tabHeading; } set { SetProperty(ref _tabHeading, value, () => TabHeading); } }
我这里把”Tab Title”修改为“Geocode”
复制粘贴此段代码,做如下修改:
private string _address = "Los Angeles"; public string Address { get { return _address ; } set { SetProperty(ref _address , value, () => Address); } }
然后打开ConfigurationManager.cs,在刚才的updata函数里面加入如下代码:
if(tabElement.Parent.Name.LocalName.StartsWith(“backstage”)){ If(id.Value==”esri_core_newProjectBackStageTab” || id.Value==”esri_core_openProjectBackStageTab”){ elements.Add(tabElement); } continue;}
然后我们运行一下,界面如图:
修改地址,继续访问
PS:尽量不要直接复制本文里面的代码直接粘贴到项目里,可能会由于空格或者其他问题出现较多错误。
欢迎大家指正交流
- ArcGIS Pro SDK 1.4
- ArcGIS Pro 1.2 SDK新鲜出炉
- 【译】ArcGIS Pro SDK 2.1将包含什么内容?
- ArcGIS Pro开发
- arcgis pro与portal
- ArcGIS Explorer SDK简介
- ArcGIS Pro 简明教程(1)Pro简介
- ArcGIS Pro 1.4 Pandas包导入的一个Bug修复全过程
- ArcGIS Pro系列教程之简介
- ArcGIS Pro登录及离线授权
- 现阶段选择ArcMap还是ArcGIS Pro
- 现阶段选择ArcMap还是ArcGIS Pro
- ArcGIS Pro和ArcGIS Licence Manager的关系
- mac pro 开发环境Eclipse+ADT+SDK
- 【ARCGIS SDK】ArcGIS发布的地图服务不显示解决方案
- ArcGIS Runtime SDK for Android 授权(arcgis android 去除水印)
- ArcGIS Pro 简明教程(3)数据编辑
- 在ArcGIS Pro 1.3之外运行arcpy独立脚本
- 使用 Git上传代码到coding.net代码仓库详解
- 异常点/离群点检测算法——LOF
- markdown语法大全
- hadoop2配置文件参数说明
- JS动态修改单网页web应用在微信浏览器中的title
- ArcGIS Pro SDK 1.4
- dao持久层通用泛型接口模板
- 【Python】利用tkFileDialog打开文件对话框
- Android系统下的wifi
- 端口号的分类
- 关于微信图片上传时出现uloadImage:fail
- Spark Graphx
- P帧
- 你可记得曾经的-------- C#面向对象的“基础”