没有找到合适的产品?
联系客服协助选型:023-68661681
提供3000多款全球软件/控件产品
针对软件研发的各个阶段提供专业培训与技术咨询
根据客户需求提供定制化的软件开发服务
全球知名设计软件,显著提升设计质量
打造以经营为中心,实现生产过程透明化管理
帮助企业合理产能分配,提高资源利用率
快速打造数字化生产线,实现全流程追溯
生产过程精准追溯,满足企业合规要求
以六西格玛为理论基础,实现产品质量全数字化管理
通过大屏电子看板,实现车间透明化管理
对设备进行全生命周期管理,提高设备综合利用率
实现设备数据的实时采集与监控
利用数字化技术提升油气勘探的效率和成功率
钻井计划优化、实时监控和风险评估
提供业务洞察与决策支持实现数据驱动决策
转帖|使用教程|编辑:我只采一朵|2014-09-03 09:35:39.000|阅读 1084 次
概述:本文介绍如何在 Xamarin.iOS 项目中使用 ArcGIS Server 云端专题数据
# 界面/图表报表/文档/IDE等千款热门软控件火热销售中 >>
相关链接:
本文介绍如何在 Xamarin.iOS 项目中使用 ArcGIS Server 云端专题数据,假设你已经准备好了 和 绑定项目。
ArcGIS API 提供的专题图层 () 可以用来访问并编辑矢量地图数据,它依赖于 ArcGIS 服务器专题服务 (Feature Service) , 专题服务不仅可以浏览和编辑数据, 还可以使用类似 SQL 的语法对数据进行过滤, 专题服务可以托管在 ESRI 的 ArcGIS Online 云中, 也可以部署在自己的服务器上。 本文中使用的是 ArcGIS Online 的专题服务。
添加专题服务图层是非常简单的, 只要初始化一个 图层实例并把它添加到地图上就可以了, 要初始化一个图层 , 你需要知道专题服务的 URL 和访问服务所需的用户凭据, 而本文中使用专题服务是公开的, 因此不需要任何凭据。 将图层添加到地图上之后, 你需要使用自定义符号将图层的数据在地图上显示成蓝色的小圆点。
public override void ViewDidLoad() {
base.ViewDidLoad();
// 添加地图底图
var url = NSUrl.FromString("//services.arcgisonline.com/ArcGIS/rest/services/Canvas/World_Light_Gray_Base/MapServer");
var tiledLayer = AGSTiledMapServiceLayer.TiledMapServiceLayerWithURL(url);
this.MapView.AddMapLayer(tiledLayer, "Basemap Tiled Layer");
// 专题图层
var featureLayerUrl = NSUrl.FromString("//services.arcgis.com/oKgs2tbjK6zwTdvi/arcgis/rest/services/Major_World_Cities/FeatureServer/0");
var featureLayer = AGSFeatureLayer.FeatureServiceLayerWithURL(featureLayerUrl, AGSFeatureLayerMode.OnDemand);
featureLayer.OutFields = new string[] { "*" };
this.MapView.AddMapLayer(featureLayer, "CloudData");
// 自定义符号
AGSSimpleMarkerSymbol featureSymbol = AGSSimpleMarkerSymbol.SimpleMarkerSymbolWithColor(UIColor.FromRGBA(0f, 0.46f, 0.68f, 1f));
featureSymbol.Size = new SizeF(7, 7);
featureSymbol.Style = AGSSimpleMarkerSymbolStyle.Circle;
//featureSymbol.Outline
featureLayer.Renderer = AGSSimpleRenderer.SimpleRendererWithSymbol(featureSymbol);
}
在这一节中, 允许用户从列表中选择一个国家。 要完成这个功能, 需要在界面上添加一个按钮, 并将按钮的 Touch Up Inside 事件连接到方法 ShowCountryPicker :

当用户点击按钮时, 会调用 View Controller 的 ShowCountryPicker 方法, 在这个方法中, 我们初始化一个 UIPickerView 并把它显示在屏幕上, 要显示国家列表, 则需要指定数据源并实现 UIPickerViewDataSource 协议中定义的方法, 为了能收到用户选择的选项, 还需要实现 UIPickerViewDelegate 协议中定义的 pickerView:didSelectRow:inComponent: 方法。
partial void ShowCountryPicker(UIButton sender) {
if (this.Countries == null) {
this.Countries = new string[] { @"None",@"US",@"Canada",@"France",@"Australia",@"Brazil" };
}
var pickerSheet = new UIActionSheet(new RectangleF(0, 0, 320, 410));
pickerSheet.ShowInView(this.View);
pickerSheet.Bounds = new RectangleF(0, 0, 320, 410);
var countryPicker = new UIPickerView(pickerSheet.Bounds);
countryPicker.WeakDelegate = this;
countryPicker.DataSource = this;
countryPicker.ShowSelectionIndicator = true;
pickerSheet.AddSubview(countryPicker);
}
#region "UIPickerview DataSource Part"
[Export("numberOfComponentsInPickerView:")]
public int GetComponentCount(UIPickerView picker) {
return 1;
}
[Export("pickerView:numberOfRowsInComponent:")]
public virtual int GetRowsInComponent(UIPickerView picker, int component) {
return this.Countries.Length;
}
[Export("pickerView:titleForRow:forComponent:")]
public virtual string GetTitle(UIPickerView picker, int row, int component) {
return this.Countries[row];
}
#endregion
#region "UIPickerview Delegate Part"
[Export("pickerView:didSelectRow:inComponent:")]
public virtual void Selected(UIPickerView picker, int row, int component) {
// Dismiss action sheet
var pickerSheet = (UIActionSheet)picker.Superview;
pickerSheet.DismissWithClickedButtonIndex(0, true);
}
#endregion
我们现在来完成高亮显示属于用户选择的国家的数据。
首先得到的是用户选择的国家, 如果用户选择了 None 的话, 清空专题图层选中的数据; 否则, 使用类似于 SQL 的语法 COUNTRY = <selected_country> 来选中专题图层的数据。 不过在进行选中操作之前, 需要设置专题图层选中数据的符号, 比如设置选中的数据在地图上显示为红色的原点; 同时还需要设置图层的 queryDelegate , 实现 AGSFeatureLayerQueryDelegate 协议定义的方法, 这样当选择操作完成时,才能收到通知。
#region "UIPickerview Delegate Part"
[Export("pickerView:didSelectRow:inComponent:")]
public virtual void Selected(UIPickerView picker, int row, int component) {
var countryName = this.Countries[row];
var featureLayer = (AGSFeatureLayer)this.MapView.MapLayerForName("CloudData");
if (featureLayer.SelectionSymbol == null) {
// SYMBOLOGY FOR WHERE CLAUSE SELECTION
var selectedFeatureSymbol = AGSSimpleMarkerSymbol.SimpleMarkerSymbolWithColor(UIColor.FromRGBA(0.78f, 0.3f, 0.19f, 1f));
selectedFeatureSymbol.Style = AGSSimpleMarkerSymbolStyle.Circle;
selectedFeatureSymbol.Size = new SizeF(10, 10);
featureLayer.SelectionSymbol = selectedFeatureSymbol;
}
if (featureLayer.WeakQueryDelegate == null) {
featureLayer.WeakQueryDelegate = this;
}
if (countryName == "None") {
// CLEAR SELECTION
featureLayer.ClearSelection();
}
else {
var selectQuery = AGSQuery.Query();
selectQuery.Where = string.Format("COUNTRY = '{0}'", countryName);
featureLayer.SelectFeaturesWithQuery(selectQuery, AGSFeatureLayerSelectionMethod.New);
}
// Dismiss action sheet
var pickerSheet = (UIActionSheet)picker.Superview;
pickerSheet.DismissWithClickedButtonIndex(0, true);
}
#endregion
#region "AGSFeature Query Delegate part"
[Export("featureLayer:operation:didSelectFeaturesWithFeatureSet:")]
public virtual void DidSelectFeaturesWithFeatureSet(AGSFeatureLayer featureLayer, NSOperation op, AGSFeatureSet featureSet) {
AGSMutableEnvelope env = null;
foreach (var selectedFature in featureSet.Features) {
if (env != null) {
env.UnionWithEnvelope(selectedFature.Geometry.Envelope);
}
else {
env = (AGSMutableEnvelope)selectedFature.Geometry.Envelope.MutableCopy();
}
}
this.MapView.ZoomToGeometry(env, 20, true);
}
#endregion
好了, 现在可以运行一下这个测试程序, 如果没有错误的话, 看到下面的程序截图:

点击按钮时, 屏幕截图如下:

选择 US 时, 截图如下:

本文转自张志敏的技术专栏
本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@ke049m.cn
在使用Parasoft C/C++test执行BugDetective数据流分析时,可能会遇到用户自定义的资源API,那在这种情况下,若要判断是否存在资源问题,如资源泄露等,则需要手动配置测试配置。
大型SaaS系统的自动化测试常常受制于界面变化快、结构复杂、加载机制多变等因素。从元素识别到脚本管理,SmartBear TestComplete帮助Salesforce建了可靠的自动化测试体系。
BarTender 标签管理系统,正是帮助企业轻松实现 GS1 标准化标签设计、编码生成与信息联动的强大工具。
Parasoft C/C++test 是一款功能强大的 C/C++ 软件测试工具,集成了静态代码分析、单元测试、集成测试和覆盖率分析等功能,单元测试作为其关键功能之一,为了适配多样化的目标部署环境,C/C++test 设计了灵活的测试结果收集机制。通过Socket通讯方式来收集单元测试结果,从而扩展其测试覆盖范围与应用场景。
相关产品
用C#开发iOS、Android和Windows Phone原生应用程序,一次开发,多平台交付
Xamarin Studio跨平台移动开发(IDE)利器
Xamarin Test Cloud加速移动开发的云端测试利器
Xamarin for Visual Studio用Visual Studio开发原生 iOS, Android 和Windows应用程序
Xamarin.Forms通过一个共享的C#代码库创建iOS,Android和Windows Phone原生UI
最新文章 MORE
半岛外围网上直营相关的文章 MORE
服务电话
重庆/ 023-68661681
华东/ 13452821722
华南/ 18100878085
华北/ 17347785263
客户支持
技术支持咨询服务
服务热线:400-700-1020
邮箱:sales@ke049m.cn
关注我们
地址 : 重庆市九龙坡区火炬大道69号6幢
半岛外围网上直营