ArcGIS Silverlight API:是建構在微軟Silverlight平台之上,通過ArcGIS Server Rest API消費ArcGIS
Server 服務,同時支援直接消費Bing地圖服務的應用程式程式設計接口。
ArcGIS Server服務:
1、MapService --地圖展示、要素查詢
2、GeometryService - -實作基于Geometry的功能子產品
3、Geoprocessing Service --在Web端消費GP工具
4、GeoCodeService --實作地理編碼和解碼
Bing服務:
1、Map Services --通路Bing線上緩存地圖資料
2、GeoCode Service --提供世界範圍的地理編碼服務
3、Routin Service --駕駛/導航路線服務
學習Silverlight官網:
1、http://silverlight.net/
2、http://www.codeplex.com/Silverlght
3、http://msdn.microsoft.com/zh-cn/library/cc838158(VS.95).aspx
API Library概述:
ESRI.ArcGIS.Client.dll 核心類庫,包括Map、Layer、Graphics、Geometry、Symbol、Task
ESRI.ArcGIS.Client.Behaviors.dll 包含一套行為和動作,用來與Map及其内容互動
ESRI.ArcGIS.Client.Bing.dll 專門針對Bing(Virtual Earth)服務的類庫,支援添加Bing的MapService、GeoCode Service和Routin Services。
ESRI.ArcGIS.Client.ToolKit.dll 包含Bookmark、Magnifier、MapTip、Toolbar、Navigation、OverviewMap等控件。
Silverlight API開發---------Map&Layer
支援的圖層類型:
ArcGISDynamicMapServiceLayer
ArcGISTiledMapServiceLayer
ArcGISImageServiceLayer
GraphicsLayer
FeatureLayer --指定類型的GraphicsLayer
url --必須指定MapService圖層的位址
where --定義的查詢條件
FeatureSymbol --用于所有的Graphics
Clusterer --要素點按簇顯示
OutFields --指定傳回的字段
TileLayer --Bing Layer
ElementLayer --Silverlight UI/Media
圖層拓撲關系圖:
Layer
DynamicLayer ElementLayer TiledMapServiceLayer GraphicLayer
DynamicMapServiceLayer FeatureLayer
GPResultImageLayer Bing.TileLayer
ArcGISImageServiceLayer ArcGISTiledMapServiceLayer
ArcGISDynamicMapServiceLayer
注意事項:
1、 地圖顯示的順序依照加載的先後順序
2、 Map初始化空間參考和比例尺級别
3、 ArcGISDynamicMapServiceLayer的背景色總是透明
4、 Multi-Layer Cache不支援
5、 地圖服務安全政策
6、 SnapToLevels屬性
7、 控制地圖動畫時間->ZoomDuration(1.5)&PanDuration(0.75)
API支援的Task類(ESRI.ArcGIS.Client.Tasks)
QueryTask --針對單個圖層
IdentifyTask --與位置相交的要素
FindTask --指定要素的模糊查詢
Locator --擷取位址的地理坐标(GeoCode)
Address --擷取地理坐标的位址(Reverse GeoCode)
GeometryService --執行Geometry操作
GeoProcessor --做複雜的GIS分析
GeometryService
功能 描述
面積和周長工具 計算輸入的polygons的面積和周長
AreasAndLengths
測距 計算輸入polylines的長度
Lengths
緩沖區工具
Buffer 計算緩沖距離,計算輸入點的緩沖區
計算标注點 計算輸入polygons的标注點
LabelPoints
簡化 對輸入的geometries進行拓撲校正
Simplify
投影 對輸入的geometries進行投影轉換
Project
空間關系 計算geometries之間的空間關系
Relation
使用Task三步走原則:
1、 執行個體化Task對象,注冊Task完成、失敗的監聽事件。
QueryTaskqueryTask;
queryTask= new QueryTask(“http://localhost/ArcGIS/rest/services/USA/MapServer/5”);
queryTask.ExecuteCompleted+=QueryTask_ExecuteCompleted;
queryTask.Failed+=QueryTask_Failed;
2、 執行個體化Task參數對象,為必要的屬性指派,發送請求。
Queryquery = new Query();
query.ReturnGeometry= true;
query.OutFields.AddRange(newstring[] {“STATE_NAME”});
query.Where= QueryTextBox.Text;
queryTask.ExecuteAsync(query);
3、 在Completed事件中處理傳回結果/處理失敗的結果。
privatevoid QueryTask_ExecuteCompleted(object sender,QueryEventArgs args)
{
GraphicsLayer graphicsLayer = myMap.Layers[“MyGLayer”]as GraphicsLayer;
graphicsLayer.ClearGraphics();
…
}
private voidQueryTask_Failed(object sender,TaskFailedEventArgs args)
{
MessageBox.Show(“Query Failed:”+args.Error);
}
GPService
執行GP服務的2套成員
同步GP服務 -----短處理事件ExecuteAsync
隻要執行一完成,就傳回每個操作的結果給用戶端,在伺服器端不存儲結果。
異步GP服務 ---長處理時間 SubmitJobAsync
存儲結果在伺服器上,傳回一個job ID給用戶端,用戶端然後使用這個ID傳回結果。
Behavior->被設計為操作基于map的預定義事件,并且生成結果
--ConstrainExtentBehavior
--MaintainExtentBehavior
--ShowCoordinatesBehavior
Action->被設計為操作map及其内容,并生成結果
--PanToAction
--ZoomToAction
--ZoomToFullExtentAction
--MeasureAction
需要添加System.Windows.Interactivity.dll引用。
Silverlight API開發---ToolKit工具欄
Bookmarks 書簽
FeatureDataGrid 要素表格
Magnifier 放大鏡
MagnifyingGlass 放大鏡
MapProgressBar 地圖進度條
MapTips 地圖提示
Navigation 導航工具
OverviewMap 鷹眼
客戶化控件外觀
目的:
改變現實樣式、改變狀态、改變與使用者互動方式,但不改變功能。
實作思路:
1、 分析控件結構和控件狀态
2、 在資源字典中根據控件協定自定義新的控件模闆
3、 在xaml中為控件的Template屬性指派
Silverlight API實作專題圖繪制:
在地圖上展現專題業務資訊,為使用者實作控件維分析
1、 專題要素需要在GraphicLayer中顯示,建構GraphicLayer
2、 自定義專題要素符号,并綁定專題要素屬性
3、 queryTask傳回查詢要素
4、 在GraphicLayer中添加Graphic,完成專題圖繪制
Silverlight API可擴充性–--自定義圖層
目的:
在地圖控件中加載Silverlight API未原生支援的圖層。
1、 了解自定義圖層的通路原理(通路協定)
2、 根據服務特點選擇繼承對象
3、 初始化資源(重載Initiallize方法)
4、 構造請求服務的URL
經典案例:
SilverlightShowCase官網上有案例源碼,一定要學習一下。