(2011-09-21 09:09:26)
标簽:
發現了一個很好的學習工具,就是Esri的線上幫助,包括概念,例子,API介紹等等。接下來的學習基本上就是按照例子結合開發方案進行實踐學習。
<a href="http://help.arcgis.com/en/webapi/silverlight/samples/start.htm">http://help.arcgis.com/en/webapi/silverlight/samples/start.htm</a>
程式的構成 和asp.net結構類似,前台設計代碼+背景程式代碼。
Xaml+Xaml.cs
Xaml包括控件的引用、設計表格的代碼、控件的設定和資料綁定代碼。
Xaml則是C#程式代碼。
首先學習加載圖層,添加控制控件。
加載圖層服務是在Xaml中添加的,放在代碼最下端的是在最上端顯示的。圖層服務的顯示可以在背景程式中控制
可以添加一些控制控件,navigation(導航控件)、scaleLine(比例尺)、mapProgressBar(進度條),直接連結map就可以,非常友善。
實際上map控件加載的是server釋出的一個地圖服務。
圖層加載服務有三種:
TiledMap 緩存切片地圖服務 适用于在伺服器已經做了緩存的地圖
DynamicMap 動态地圖服務 适用于沒做緩存的地圖
Image 影像服務
它們都屬于MapServer。
FeatureLayer則不是加載服務,而是加載某一個确切的圖層。屬于graphics layer
在Featurelayer裡,加載"Renderer"可以制定矢量要素的各種形狀及滑鼠的形狀。
<Grid.Resources>
<esri:SimpleRenderer
x:Key="SelectRenderer">
<esri:SimpleRenderer.Symbol>
//client.SimpleRenderer.Symbol
<esri:SimpleMarkerSymbol Color="#7F0F2497"
Size="20"/>
//制定點的形狀
</esri:SimpleRenderer.Symbol>
</Grid.Resources>
嘗試了利用FeatureDataGrid顯示加載的圖層屬性資料。但是卻顯示資料總數,不顯示資料,後來對照源代碼好像是AutoGenerateColumns選項沒選上。
顯示滑鼠坐在地理真實坐标,需要首先擷取滑鼠螢幕坐标,再利用map1.ScreenToMap擷取真實坐标。
(2011-09-22 16:49:07)
通過表格查找要素并且顯示屬性和高亮地圖顯示
關鍵接口:
ESRI.ArcGIS.Client.Tasks.QueryTask 用于查詢
QueryTask queryTask = new QueryTask("http..."); 設定查詢圖層服務
queryTask.ExecuteAsync(query); 執行查詢語句
queryTask.ExecuteAsync(query,"user state"); 執行查詢語句并帶使用者狀态
ESRI.ArcGIS.Client.Tasks.Query 用于設定查詢條件
Query.text 設定查找文本
Query.Where 設定查找條件
Query.Outfield.AddRange or Query.Outfield.Add 設定查詢輸出字段
Query.OutSpatialReference 設定查詢輸出控件參考
Query.ReturnGeometry 設定輸出要素是否包含集合體
datagrid資料綁定:
分兩種:一種是橫排顯示,一種是豎排顯示
豎排顯示首先在Xaml中要首先設定列字段資料綁定
<Datagrid columns>
<sdk:datagrid.textcolumn Binding="{binding path=key}">//字段
<sdk:datagrid.textcolumn Binding="{binding path=value}">//值
在背景代碼中:
dataGrid.ItemsSource = selectedFeature.Attributes;//綁定選擇要素的屬性
橫排顯示需要在Xaml中設定列字段資料綁定
<sdk:datagrid.textcolumn Binding="{binding attributes[]}">//綁定
在背景代碼中:
Binding resultFeaturesBinding = new Binding("LastResult.Features");//綁定屬性
resultFeaturesBinding.Source = queryTask;//綁定來源
dataGrid1.SetBinding(DataGrid.ItemsSourceProperty,
resultFeaturesBinding);//綁定
在地圖中高亮顯示:
首先在Xaml中添加圖層<esri:GraphicsLayer
ID="MyGraphicsLayer" />
再在背景程式中:
GraphicsLayer selectionGraphicslayer =
map1.Layers["MySelectionGraphicsLayer"] as GraphicsLayer;
graphicsLayer.Graphics.Add(selectedFeature);//綁定要素圖層标記
通過點選圖層查找要素并且顯示屬性和高亮地圖顯示
定義滑鼠勾畫結束事件
private void MyDrawFace_DrawComplete (object sender,
ESRI.ArcGIS.Client.DrawEventArgs args)
{
QueryTask queryTask = new QueryTask("http:“);//定義查找資料源
query.Geometry = args.Geometry;//定義查找圖形
queryTask.ExecuteAsync(query);執行查找
}
在地圖中高亮顯示多個要素:
foreach (Graphic feature in featureSet.Features)
graphicsLayer.Graphics.Insert(0, feature);
(2011-10-11 08:52:52)
win7的IIS配置。win7預設的IIS是7.5.
silverlight程式釋出,比較簡單,在vs2010下,右鍵單擊Web工程後點選釋出即可。
設定IIS,首先建立網站,然後在建立網站上添加應用程式,路徑設定為工程所在檔案夾,應用程式池選擇asp.net4.0。
arcgis api for silverlight程式擷取Server服務,在伺服器的IIS目錄下,必須放置這兩個檔案(crossdomain.xml和clientaccesspolicy.xml)?跨域通路檔案
防火牆一定要關閉或者設定好。
webconfig,加預設文檔前要加<clear />。