zoukankan      html  css  js  c++  java
  • ArcServer for Silverlight系列之属性查询

    原文地址:http://hi.baidu.com/javacookies/blog/item/aef559a114d6e685461064a8.html 
     
    <UserControl x:Class="ArcGISSilverlightSDK.Find"
        xmlns
    ="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
        xmlns:x
    ="http://schemas.microsoft.com/winfx/2006/xaml" 
        xmlns:esri
    ="clr-namespace:ESRI.ArcGIS.Client;assembly=ESRI.ArcGIS.Client"
        xmlns:esriSymbols
    ="clr-namespace:ESRI.ArcGIS.Client.Symbols;assembly=ESRI.ArcGIS.Client"
        xmlns:esriConverters
    ="clr-namespace:ESRI.ArcGIS.Client.ValueConverters;assembly=ESRI.ArcGIS.Client"
        xmlns:slData
    ="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.Data">
        <Grid x:Name="LayoutRoot" Background="#FF5C90B2">
            
            <Grid.Resources>
                <esriSymbols:SimpleMarkerSymbol x:Name="DefaultMarkerSymbol" Size="8" Color="Red" Style="Circle" />
                <esriSymbols:SimpleLineSymbol x:Name="DefaultLineSymbol" Color="Red" Width="6" />
                <esriSymbols:SimpleFillSymbol x:Name="DefaultFillSymbol" BorderBrush="Red" BorderThickness="2" Fill="#50FF0000"/>
                <esriConverters:DictionaryConverter x:Name="MyDictionaryConverter" />
            </Grid.Resources>
            
            <Grid.RowDefinitions>
                <RowDefinition Height="35" />
                <RowDefinition Height="*" />
                <RowDefinition Height="150" />
            </Grid.RowDefinitions>
            <!--查询条件-->
            <Border BorderBrush="Black" BorderThickness="1">
                <StackPanel Orientation="Horizontal" Background="#FF5C90B2" Grid.Row="0" HorizontalAlignment="Left" VerticalAlignment="Top" >
                    <TextBlock Text="Search for" Foreground="Black" 
                               HorizontalAlignment
    ="Center" Height="24" VerticalAlignment="Center" 
                               FontWeight
    ="Bold" FontSize="12" Margin="20,8,5,0"/>
                    <TextBox x:Name="FindText" Background="White" Text="River" Height="23" Width="100" HorizontalContentAlignment="Center" />
                    <TextBlock Text="in the attributes of States or Counties:" Foreground="Black" 
                               HorizontalAlignment
    ="Center" Height="24" VerticalAlignment="Center" 
                               FontWeight
    ="Bold" FontSize="12" Margin="5,8,5,0"/>
                    <Button x:Name="ExecuteButton" Content="Find" Width="75" Height="24" VerticalAlignment="Center" Click="ExecuteButton_Click" 
                            Margin
    ="5,0,5,0" Cursor="Hand" />
                </StackPanel>
            </Border>
            <!--地图控件-->
            <esri:Map x:Name="MyMap" Background="White" Grid.Row="1" Extent="-125, 25, -65, 55">
                <esri:Map.Layers>
                    <esri:ArcGISTiledMapServiceLayer ID="TopoLayer" 
                        Url
    ="http://server.arcgisonline.com/ArcGIS/rest/services/NGS_Topo_US_2D/MapServer"/>
                    <esri:ArcGISDynamicMapServiceLayer ID="DemographicLayer" Opacity="0.2"
                        Url
    ="http://sampleserver1.arcgisonline.com/ArcGIS/rest/services/Demographics/ESRI_Census_USA/MapServer" VisibleLayers="4,5" />      
                    <esri:GraphicsLayer ID="MyGraphicsLayer" />
                </esri:Map.Layers>
            </esri:Map>        
            <!--查询结果GIRD控件-->
            <slData:DataGrid x:Name="FindDetailsDataGrid" AutoGenerateColumns="False" HeadersVisibility="All" Background="White" 
                             BorderBrush
    ="Black" BorderThickness="1" SelectionChanged="FindDetails_SelectionChanged" 
                             HorizontalAlignment
    ="Left" HorizontalScrollBarVisibility="Hidden" Grid.Row="2" Width="Auto"
                             IsReadOnly
    ="True">
                <slData:DataGrid.Columns>
                    <slData:DataGridTextColumn Width="65" Binding="{Binding Path=LayerId}" Header="Layer ID" />
                    <slData:DataGridTextColumn Width="90" Binding="{Binding Path=LayerName}" Header="Layer Name"/>
                    <slData:DataGridTextColumn Width="80" Binding="{Binding Path=FoundFieldName}" Header="Found Field" />
                    <slData:DataGridTextColumn Width="80" Binding="{Binding Path=Value}" Header="Value"/>
                    <slData:DataGridTextColumn Width="120" Binding="{Binding Converter={StaticResource MyDictionaryConverter},
                        ConverterParameter=STATE_NAME, Mode=OneWay, Path=Feature.Attributes}"
     Header="State Name"/>
                </slData:DataGrid.Columns>
            </slData:DataGrid>        
        </Grid>
    </UserControl> 

     using System.Windows;

    using System.Windows.Controls;
    using System.Windows.Data;
    using ESRI.ArcGIS.Client;
    using ESRI.ArcGIS.Client.Tasks;

    namespace ArcGISSilverlightSDK
    {
        public partial class Find : UserControl
        {
            public Find()
            {
                InitializeComponent();
            }
    //查询
            private void ExecuteButton_Click(object sender, RoutedEventArgs e)
            {
                GraphicsLayer graphicsLayer = MyMap.Layers["MyGraphicsLayer"as GraphicsLayer;
                graphicsLayer.ClearGraphics();

                FindTask findTask = new FindTask("http://sampleserver1.arcgisonline.com/ArcGIS/rest/services/" +
                    "Demographics/ESRI_Census_USA/MapServer");
                findTask.Failed += FindTask_Failed;

                FindParameters findParameters = new FindParameters();
                // 查询的层列表
                findParameters.LayerIds.AddRange(new int[] { 35 });
                // 查询的字段列表
                findParameters.SearchFields.AddRange(new string[] { "NAME""STATE_NAME""STATE_ABBR""TRACT""BLOCK""BLKGRP" });

                // 绑定查询结果到GRID 
                Binding resultFeaturesBinding = new Binding("LastResult");
                resultFeaturesBinding.Source = findTask;
                FindDetailsDataGrid.SetBinding(DataGrid.ItemsSourceProperty, resultFeaturesBinding);
         //查询条件
                findParameters.SearchText = FindText.Text;
                //执行查询
                findTask.ExecuteAsync(findParameters);
            }
            private void FindDetails_SelectionChanged(object sender, SelectionChangedEventArgs e)
            {
                //高亮显示被选中记录对应的图元
                DataGrid dataGrid = sender as DataGrid;
                int selectedIndex = dataGrid.SelectedIndex;
                if (selectedIndex > -1)
                {
                    FindResult findResult = (FindResult)FindDetailsDataGrid.SelectedItem;
                    Graphic graphic = findResult.Feature;
                    switch (graphic.Attributes["Shape"].ToString())
                    {
                        case "Polygon":
                            graphic.Symbol = DefaultFillSymbol;
                            break;
                        case "Polyline":
                            graphic.Symbol = DefaultLineSymbol;
                            break;
                        case "Point":
                            graphic.Symbol = DefaultMarkerSymbol;
                            break;
                    }
                    GraphicsLayer graphicsLayer = MyMap.Layers["MyGraphicsLayer"as GraphicsLayer;
                    graphicsLayer.ClearGraphics();
                    graphicsLayer.Graphics.Add(graphic);
                }
            }

            private void FindTask_Failed(object sender, TaskFailedEventArgs args)
            {
                MessageBox.Show("Find failed: " + args.Error.Message);
            }
        }
    }
  • 相关阅读:
    解决Android SDK Manager更新、下载速度慢
    selenium报错以及各解决方法
    webdriver对各种浏览器的支持
    selenium driver版本和Chrome浏览器版本对应关系
    selenium web driver
    js中变量注意事项
    js选项卡实现
    两种JS方法实现斐波那契数列
    三种JS方法确定元素在数组中的索引值
    javascript内置属性——arguments
  • 原文地址:https://www.cnblogs.com/merray/p/2506203.html
Copyright © 2011-2022 走看看