//几何对象绘制结束触发事件 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); } }