ArcGis Runtime SDK for .Net
程序员文章站
2023-12-26 15:27:39
...
1:全新的Map控件 MapView
在之前的版本包含两个控件,一个MapView,主要显示Map的容器,另一个是Map,主要是图层的集合,在新版本这两个控件集成到一个了,让开发者使用更加的方便。
2:FeatureLayer的变化
featurelayer的数据来自于featuretables
var gdb = await Geodatabase.OpenAsync(GDB_PATH);
Envelope extent = new Envelope();
foreach (var table in gdb.FeatureTables)
{....}
通过QueryAsync直接查询,而不需要必须借助于QueryTask
var features = await cities.FeatureTable.QueryAsync(new QueryFilter() { WhereClause = where.Text});
queryResults.GraphicsSource = features.Select(f => new Graphic(f.Geometry));
更多的是用Task的方式,而区别于以前的Event模式
QueryTask queryTask = new QueryTask(
new Uri("http://sampleserver1.arcgisonline.com/ArcGIS/rest/services/Demographics/ESRI_Census_USA/MapServer/5"));
var stateName = (string)(QueryComboBox.SelectedItem as Graphic).Attributes["STATE_NAME"];
Query query = new Query(string.Format("STATE_NAME = '{0}'", stateName))
{
OutFields = OutFields.All,
ReturnGeometry = true,
OutSpatialReference = mapView.SpatialReference
};
var result = await queryTask.ExecuteAsync(query);
Task是从 .Net frameworks4.0引进的,它的出现是为了使多线程编程变得简单,Task和Thread还不是一回事,Task由TaskManager管理,一个Task会执行在一个Thread上,但是如果没有足够的Thread,TaskManager会暂时挂起这个Task,直到有足够的Thread资源为止。Task的另外一个好处是TaskManager会把执行这些Task的Thread自动的分配在不同的Core上,就是所谓的并行编程。
await极大简化了异步代码量,await和async是.Net Frameworks4.5的新特性,是长时间操作任务的福音。在.NET4.5中新增了异步编程的新特性async和await,使得异步编程更为简单。通过特性可以将这项复杂的工作交给编译器来完成了。之前传统的方式来实现异步编程较为复杂,这样对于程序猿来说处理起来比较困难,调试也没那么方便,后续的维护工作也比较痛苦。
Async和Await关键字是C#异步编程的核心。通过使用这两个关键字,你可以使用.NET Framework 或 Windows Runtime的资源创建一个异步方法如同创建一个同步方法一样容易。
推荐阅读