${REST_QueryByGeometryService_Tile}

${REST_QueryByGeometryService_Description}

Inheritance: QueryService
        //几何对象绘制结束触发事件
        private async void DrawCompleted(object sender, DrawEventArgs e)
        {


            //设置几何查询参数,FilterParameters、Geometry 和 SpatialQueryMode 为必设属性
            QueryByGeometryParameters parameter = new QueryByGeometryParameters
            {
                FilterParameters = new List<FilterParameter>() 
                {             
                        new FilterParameter()
                       {
                           Name = "Countries@World",                          
                       }
                },
                Geometry = e.Geometry,
                SpatialQueryMode = SpatialQueryMode.INTERSECT,

                //设置是返回查询结果资源(false)还是返回查询结果记录集(true)
                ReturnContent = notHighlight
            };

            //与服务器交互
            try
            {
                QueryByGeometryService service = new QueryByGeometryService(url);
                var result = await service.ProcessAsync(parameter);
                //无查询结果的情况
                if (result == null)
                {
                    await MessageBox.Show("查询结果为空!");
                    return;
                }

                //如果当前矢量图层中存在上一次的查询地物,则清除
                if (flayer.Features.Count > 0)
                {
                    flayer.Features.Clear();
                }

                highlayer.IsVisible = false;
                highlayer.Refresh();

                //当 ReturnContent = false 且有查询结果时,返回结果中的 ResourceInfo 不为空
                //当 ReturnContent = true 且有查询结果时,返回结果中的 Recordsets 不为空,ResourceInfo 为空
                if (result.ResourceInfo != null)
                {
                    highlayer.IsVisible = true;

                    //获取高亮图片在服务器上存储的资源 ID 号
                    highlayer.QueryResultID = result.ResourceInfo.NewResourceID;

                    //设置服务端高亮图层的样式
                    highlayer.Style = new ServerStyle() { FillForeColor = new Color { R = 0, G = 160, B = 0 }, LineWidth = 0, FillOpaqueRate = 90 };

                    //该判断控制只加载一个高亮图层
                    if (!isAdded)
                    {
                        //刷新高亮图层
                        highlayer.Refresh();
                        this.MyMap.Layers.Add(highlayer);
                        isAdded = true;
                    }
                }
                else
                {


                    //将查询结果记录集中的数据转换为矢量要素并在矢量图层中显示
                    foreach (Recordset recordset in result.Recordsets)
                    {
                        foreach (Feature f in recordset.Features)
                        {
                            flayer.Features.Add(f);
                        }
                    }

                    //将查询到的地物赋予 XMAL 中自定义样式
                    foreach (Feature item in flayer.Features)
                    {
                        if (item.Geometry is GeoLine)
                        {
                            item.Style = LineSelectStyle;
                        }
                        else if (item.Geometry is GeoRegion)
                        {
                            item.Style = SelectStyle;
                        }
                        else
                        {
                            item.Style = new PredefinedMarkerStyle() { Color = new SolidColorBrush(Colors.Blue), Size = 20, Symbol = PredefinedMarkerStyle.MarkerSymbol.Diamond };
                        }
                    }
                }
            }
            //服务器查询失败
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }