您的位置:首页 > 移动开发

ArcGIS API for Silverlight之Web Mapping开发:根据图层属性查询

2010-12-09 10:15 477 查看
结果如下:



xaml前台界面如下:

<UserControl x:Class="QueryOnlyApp.MainPage"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:esri="clr-namespace:ESRI.ArcGIS.Client;assembly=ESRI.ArcGIS.Client"
xmlns:slData="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.Data"
mc:Ignorable="d" d:DesignWidth="640" d:DesignHeight="480">
<Grid x:Name="LayoutRoot">

<esri:Map x:Name="MyMap">
<esri:Map.Layers>
<esri:ArcGISTiledMapServiceLayer ID="MapLayer"
Url="http://pc1010/ArcGIS/rest/services/xinjiangmapservice/MapServer" />
</esri:Map.Layers>
</esri:Map>

<Canvas x:Name="ResultsDisplayCanvas" HorizontalAlignment="Center" VerticalAlignment="Top" Width="547" Height="200" Margin="0,30,0,0" >
<Rectangle RadiusX="10" RadiusY="10" Fill="#22000000" Canvas.Left="0" Canvas.Top="4" Width="547" Height="200" />
<Rectangle Stroke="Gray"  RadiusX="10" RadiusY="10" Fill="#775C90B2" Canvas.Left="0" Canvas.Top="0" Width="547" Height="200" />
<Rectangle Fill="#FFFFFFFF" Stroke="DarkGray" RadiusX="5" RadiusY="5" Canvas.Left="10" Canvas.Top="20" Width="527" Height="170"  />
<TextBlock x:Name="DataDisplayTitle" Text="Using Query tasks without maps" Foreground="Black" FontSize="9" Canvas.Left="10" Canvas.Top="4" FontWeight="Bold" />
<StackPanel Orientation="Horizontal" Margin="5,0,15,0" Canvas.Top="25" >
<TextBlock Text="新疆区域名称:" Margin="10,0,0,0" VerticalAlignment="Center"/>
<TextBox x:Name="StateNameTextBox" Text="New" Height="23" HorizontalAlignment="Left" VerticalAlignment="Center" Width="125" TextWrapping="NoWrap"
Margin="10,0,10,0" FontSize="12" Background="White" AcceptsReturn="False" />
<Button Content="查询" Width="75" VerticalAlignment="Center" HorizontalAlignment="Right" Click="QueryButton_Click" Margin="0,0,10,0" Cursor="Hand" />
</StackPanel>
<slData:DataGrid x:Name="QueryDetailsDataGrid" AutoGenerateColumns="False" HeadersVisibility="Column" Background="White"
IsReadOnly="True" Canvas.Left="10" Canvas.Top="50" Height="140" Width="527"
HorizontalScrollBarVisibility="Hidden">
<slData:DataGrid.Columns>
<slData:DataGridTextColumn Width="80" Binding="{Binding Path=POLYGON_ID }" Header="ID"/>
<slData:DataGridTextColumn Width="110" Binding="{Binding Path=CN_NAME }" Header="区域名称"/>
<slData:DataGridTextColumn Width="45" Binding="{Binding Path=CN_PY }" Header="区域拼音"/>
</slData:DataGrid.Columns>
</slData:DataGrid>
</Canvas>
</Grid>
</UserControl>


C#托管代码如下:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Shapes;
using ESRI.ArcGIS.Client.Tasks;
using ESRI.ArcGIS.Client;
namespace QueryOnlyApp
{
public partial class MainPage : UserControl
{
public MainPage()
{
InitializeComponent();
}
void QueryButton_Click(object sender, RoutedEventArgs e)
{
QueryTask queryTask = new QueryTask("http://pc1010/ArcGIS/rest/services/xinjiangmapservice/MapServer/25");
queryTask.ExecuteCompleted += QueryTask_ExecuteCompleted;
queryTask.Failed += QueryTask_Failed;
ESRI.ArcGIS.Client.Tasks.Query query = new ESRI.ArcGIS.Client.Tasks.Query();
query.Text = StateNameTextBox.Text;
query.OutFields.Add("*");
queryTask.ExecuteAsync(query);
}

void QueryTask_ExecuteCompleted(object sender, ESRI.ArcGIS.Client.Tasks.QueryEventArgs args)
{
FeatureSet featureSet = args.FeatureSet;
if (featureSet != null && featureSet.Features.Count > 0)
{
List<QueryResultData> resultList = new List<QueryResultData>();
foreach (Graphic feature in featureSet.Features)
{
resultList.Add(new QueryResultData()
{
POLYGON_ID = feature.Attributes["POLYGON_ID"].ToString(),
CN_NAME = feature.Attributes["CN_NAME"].ToString(),
CN_PY = feature.Attributes["CN_PY"].ToString(),
});
}
QueryDetailsDataGrid.ItemsSource = resultList;
}
else
{
MessageBox.Show("No features returned from query");
}
}
private void QueryTask_Failed(object sender, TaskFailedEventArgs args)
{
MessageBox.Show("Query execute error: " + args.Error);
}
public class QueryResultData
{
public string POLYGON_ID { get; set; }
public string CN_NAME { get; set; }
public string CN_PY { get; set; }
}

}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐