天天看點

arcgis api for silverlight

(2011-09-21 09:09:26)

arcgis api for silverlight

标簽:

發現了一個很好的學習工具,就是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"可以制定矢量要素的各種形狀及滑鼠的形狀。

&lt;Grid.Resources&gt;

   &lt;esri:SimpleRenderer

x:Key="SelectRenderer"&gt;

    &lt;esri:SimpleRenderer.Symbol&gt;                           

 //client.SimpleRenderer.Symbol

&lt;esri:SimpleMarkerSymbol Color="#7F0F2497"

Size="20"/&gt;  

//制定點的形狀

 &lt;/esri:SimpleRenderer.Symbol&gt;

  &lt;/Grid.Resources&gt;

嘗試了利用FeatureDataGrid顯示加載的圖層屬性資料。但是卻顯示資料總數,不顯示資料,後來對照源代碼好像是AutoGenerateColumns選項沒選上。

顯示滑鼠坐在地理真實坐标,需要首先擷取滑鼠螢幕坐标,再利用map1.ScreenToMap擷取真實坐标。

(2011-09-22 16:49:07)

arcgis api for silverlight

通過表格查找要素并且顯示屬性和高亮地圖顯示

關鍵接口:

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中要首先設定列字段資料綁定

&lt;Datagrid columns&gt;

&lt;sdk:datagrid.textcolumn Binding="{binding path=key}"&gt;//字段

&lt;sdk:datagrid.textcolumn Binding="{binding path=value}"&gt;//值

在背景代碼中:

dataGrid.ItemsSource = selectedFeature.Attributes;//綁定選擇要素的屬性

橫排顯示需要在Xaml中設定列字段資料綁定

&lt;sdk:datagrid.textcolumn Binding="{binding attributes[]}"&gt;//綁定

在背景代碼中:

 Binding resultFeaturesBinding = new Binding("LastResult.Features");//綁定屬性

resultFeaturesBinding.Source = queryTask;//綁定來源

dataGrid1.SetBinding(DataGrid.ItemsSourceProperty,

resultFeaturesBinding);//綁定

在地圖中高亮顯示:

首先在Xaml中添加圖層&lt;esri:GraphicsLayer

ID="MyGraphicsLayer" /&gt;

再在背景程式中:

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)

arcgis api for silverlight

win7的IIS配置。win7預設的IIS是7.5.

silverlight程式釋出,比較簡單,在vs2010下,右鍵單擊Web工程後點選釋出即可。

設定IIS,首先建立網站,然後在建立網站上添加應用程式,路徑設定為工程所在檔案夾,應用程式池選擇asp.net4.0。

arcgis api for silverlight程式擷取Server服務,在伺服器的IIS目錄下,必須放置這兩個檔案(crossdomain.xml和clientaccesspolicy.xml)?跨域通路檔案

防火牆一定要關閉或者設定好。

webconfig,加預設文檔前要加&lt;clear /&gt;。