${IS6_QueryLayer_Title}

${IS6_QueryLayer_Description}

        //服务器返回查询结果
        private void DrawCompleted(object sender, DrawEventArgs e)
        {
            QueryLayer querylayer = new QueryLayer();
            querylayer.LayerName = comboBox.SelectionBoxItem.ToString();
            List<QueryLayer> queryLayers = new List<QueryLayer>() { querylayer };

            QueryParam queryParam = new QueryParam()
            {
                ExpectCount = 0,
                QueryLayers = queryLayers,
                StartRecord = 0
            };
            QueryByGeometryParameters parameters = new QueryByGeometryParameters
            {
                Geometry = e.Geometry,
                MapName = "changchun",
                QueryParam = queryParam
            };
            QueryByGeometryService queryByGeometryService = new QueryByGeometryService("http://localhost/IS/AjaxDemo");
            queryByGeometryService.ProcessAsync(parameters);
            queryByGeometryService.Failed += new EventHandler<ServiceFailedEventArgs>(queryByGeometryService_Failed);
            queryByGeometryService.ProcessCompleted += new EventHandler<QueryServiceEventArgs>(queryByGeometryService_ProcessCompleted);

            featuresLayer.MouseLeftButtonDown +=new EventHandler<FeatureMouseButtonEventArgs>(featuresLayer_MouseLeftButtonDown);
        }
        //SQL查询
        private void Query_Click(object sender, RoutedEventArgs e)
        {
            string str = MyTextBox.Text;
            if (str == "")
            {
                MessageBox.Show("请输入SQL条件!");
            }

            QueryLayer querylayer = new QueryLayer();
            querylayer.LayerName = comboBox.SelectionBoxItem.ToString();
            querylayer.WhereClause = str;
            List<QueryLayer> queryLayers = new List<QueryLayer>() { querylayer };

            QueryParam queryParam = new QueryParam()
            {
                ExpectCount = 0,
                StartRecord = 0,
                QueryLayers = queryLayers
            };

            QueryBySqlParameters parameters = new QueryBySqlParameters
            {
                MapName = "changchun",
                QueryParam = queryParam
            };

            QueryBySqlService queryBySqlService = new QueryBySqlService("http://localhost/IS/AjaxDemo");
            queryBySqlService.ProcessAsync(parameters);
            queryBySqlService.Failed += new EventHandler<ServiceFailedEventArgs>(queryBySqlService_Failed);
            queryBySqlService.ProcessCompleted += new EventHandler<QueryServiceEventArgs>(queryBySqlService_ProcessCompleted);

            featuresLayer.MouseLeftButtonDown +=new EventHandler<FeatureMouseButtonEventArgs>(featuresLayer_MouseLeftButtonDown);
        }
        //中心点查询
        private void point_DrawCompleted(object sender, DrawEventArgs e)
        {
            QueryParam queryParam = new QueryParam();
            QueryLayer queryLayer = new QueryLayer();
            queryLayer.LayerName = comboBox.SelectionBoxItem.ToString();
            List<QueryLayer> queryLayers = new List<QueryLayer> { queryLayer };
            queryParam = new QueryParam()
            {
                ExpectCount = 0,
                QueryLayers = queryLayers,
                StartRecord = 0
            };

            //将文本中读取的容限值转换为Double类型,如果值为0则将其设为100
            double tolerance;
            if (!double.TryParse(MyTextBox.Text, out tolerance))
            {
                tolerance = 100;
            }

            QueryByCenterParameters parameters = new QueryByCenterParameters
            {
                MapName = "changchun",
                CenterPoint = e.Geometry.Bounds.Center,
                Tolerance = tolerance,
                QueryParam = queryParam
            };

            if (FindNearest.IsChecked == true)
            {
                parameters.IsNearest = true;
            }

            //与服务器交互
            QueryByCenterService query = new QueryByCenterService("http://localhost/IS/AjaxDemo");
            query.ProcessAsync(parameters);
            query.Failed += new EventHandler<ServiceFailedEventArgs>(query_Failed);
            query.ProcessCompleted += new EventHandler<QueryServiceEventArgs>(query_ProcessCompleted);

            featuresLayer.MouseLeftButtonDown+=new EventHandler<FeatureMouseButtonEventArgs>(featuresLayer_MouseLeftButtonDown);
        }
        //设置缓冲区查询参数
        private void Button_Click(object sender, RoutedEventArgs e)
        {
            BufferQueryParameters parameters = new BufferQueryParameters();

            //几何对象缓冲区查询
            if (BufferQuery.IsChecked == true)
            {
                BufferParam bufferParam = new BufferParam()
                {
                    Distance = 500,
                    FromCustomGeo = true,
                    Geometries = geometries,
                    Smoothness = 12,
                    QueryMode = SpatialQueryMode.AreaIntersect,
                    ReturnBufferResult = true
                };

                QueryLayer queriedLayer = new QueryLayer();
                queriedLayer.LayerName = QueriedComboBox.SelectionBoxItem.ToString();
                QueryParam queryParam = new QueryParam() { QueryLayers = new List<QueryLayer> { queriedLayer } };
                parameters = new BufferQueryParameters() { MapName = "changchun", QueryParam = queryParam, BufferParam = bufferParam };
            }

            //地物缓冲区查询
            else
            {
                QueryLayer queryLayer = new QueryLayer();
                queryLayer.LayerName = QueryComboBox.SelectionBoxItem.ToString();
                queryLayer.WhereClause = queryText.Text;

                BufferParam bufferParam = new BufferParam()
                {
                    FromLayer = queryLayer,
                    Distance = 500,
                    FromCustomGeo = false,
                    Smoothness = 12,
                    QueryMode = SpatialQueryMode.AreaIntersect,
                    ReturnBufferResult = true
                };

                QueryLayer queriedLayer = new QueryLayer();
                queriedLayer.LayerName = QueriedComboBox.SelectionBoxItem.ToString();
                QueryParam queryParam = new QueryParam() { QueryLayers = new List<QueryLayer> { queriedLayer } };
                parameters = new BufferQueryParameters() { MapName = "changchun", QueryParam = queryParam, BufferParam = bufferParam };
            }
            BufferQueryService bufferQueryService = new BufferQueryService("http://localhost/IS/AjaxDemo");
            bufferQueryService.ProcessAsync(parameters);
            bufferQueryService.Failed += new EventHandler<ServiceFailedEventArgs>(Service_Failed);
            bufferQueryService.ProcessCompleted += new EventHandler<BufferQueryEventArgs>(bufferQueryService_ProcessCompleted);

            resultLayer.MouseLeftButtonDown += new EventHandler<FeatureMouseButtonEventArgs>(resultLayer_MouseLeftButtonDown);
        }
        internal static string ToJson(QueryLayer queryLayer)
        {
            if (queryLayer == null)
            {
                return null;
            }
            string json = "{";
            List<string> list = new List<string>();

            if (!string.IsNullOrEmpty(queryLayer.GroupClause))
            {
                list.Add(string.Format("\"groupClause\":\"{0}\"", queryLayer.GroupClause));
            }
            else
            {
                list.Add("\"groupClause\":\"\"");
            }

            list.Add(string.Format("\"layerId\":{0}", queryLayer.LayerID));

            if (!string.IsNullOrEmpty(queryLayer.LayerName))
            {
                list.Add(string.Format("\"layerName\":\"{0}\"", queryLayer.LayerName));
            }
            else
            {
                list.Add("\"layerName\":\"\"");
            }

            if (queryLayer.ReturnFields != null && queryLayer.ReturnFields.Count > 0)
            {
                List<string> temp = new List<string>();
                for (int i = 0; i < queryLayer.ReturnFields.Count; i++)
                {
                    temp.Add(string.Format("\"{0}\"", queryLayer.ReturnFields[i]));
                }
                list.Add(string.Format("\"returnFields\":[{0}]", string.Join(",", temp.ToArray())));
            }
            else
            {
                list.Add("\"returnFields\":null");
            }

            if (!string.IsNullOrEmpty(queryLayer.SortClause))
            {
                list.Add(string.Format("\"sortClause\":\"{0}\"", queryLayer.SortClause));
            }
            else
            {
                list.Add("\"sortClause\":\"\"");
            }

            if (!string.IsNullOrEmpty(queryLayer.WhereClause))
            {
                list.Add(string.Format("\"whereClause\":\"{0}\"", queryLayer.WhereClause));
            }
            else
            {
                list.Add("\"whereClause\":\"\"");
            }

            IList<RelQueryTableInfo> relQueryTableInfos = queryLayer.RelQueryTableInfos;
            if (relQueryTableInfos != null && relQueryTableInfos.Count > 0)
            {
                List<string> ls = new List<string>();

                for (int i = 0; i < relQueryTableInfos.Count; i++)
                {
                    ls.Add(RelQueryTableInfo.ToJson(relQueryTableInfos[i]));
                }
                string temp = "[" + string.Join(",", ls.ToArray()) + "]";
                list.Add(string.Format("\"relQueryTableInfos\":{0}", temp));
            }
            else
            {
                list.Add(string.Format("\"relQueryTableInfos\":null"));
            }

            json += string.Join(",", list.ToArray());
            json += "}";

            return json;
        }