<Grid x:Name="LayoutRoot" Background="White"> <esri:Map x:Name="esriMap"> <esri:Map.Layers> <esri:ArcGISTiledMapServiceLayer Url="http://services.arcgisonline.com/ArcGIS/rest/services/World_Street_Map/MapServer"/> <esri:FeatureLayer Url="http://sampleserver3.arcgisonline.com/ArcGIS/rest/services/BloomfieldHillsMichigan/LandusePlanning/MapServer/0" /> </esri:Map.Layers> </esri:Map> <StackPanel VerticalAlignment="Top" HorizontalAlignment="Left" > <Button Content="Query Polygon" Click="Button_Click" /> <Button Content="Query Envelope" Click="Button_Click_1" /> </StackPanel> </Grid>
public partial class MainPage : UserControl { Query query; QueryTask rTask; public MainPage() { InitializeComponent(); rTask = new QueryTask("http://sampleserver3.arcgisonline.com/ArcGIS/rest/services/BloomfieldHillsMichigan/LandusePlanning/MapServer/0"); rTask.ExecuteCompleted += new EventHandler<QueryEventArgs>(rTask_ExecuteCompleted); rTask.Failed += new EventHandler<TaskFailedEventArgs>(rTask_Failed); query = new ESRI.ArcGIS.Client.Tasks.Query(); // Specify fields to return from query query.OutFields.Add("*"); query.ReturnGeometry = true; } private void Button_Click(object sender, RoutedEventArgs e) { // Create a polygon of your current extent. Should returns the number // of items you see on your screen. query.Geometry = CreatePolygonFromMapExtent(); rTask.ExecuteAsync(query); } private void Button_Click_1(object sender, RoutedEventArgs e) { query.Geometry = esriMap.Extent; rTask.ExecuteAsync(query); } void rTask_ExecuteCompleted(object sender, QueryEventArgs e) { MessageBox.Show(string.Format("{0} features on screen.",e.FeatureSet.Features.Count)); } Polygon CreatePolygonFromMapExtent() { Envelope extent = esriMap.Extent; // Create a polygon of your current map extent PointCollection pc = new PointCollection(); pc.Add(new MapPoint() { X = extent.XMin, Y = extent.YMax, SpatialReference = esriMap.SpatialReference }); // top left of map screen pc.Add(new MapPoint() { X = extent.XMax, Y = extent.YMax, SpatialReference = esriMap.SpatialReference }); // top right of map screen pc.Add(new MapPoint() { X = extent.XMax, Y = extent.YMin, SpatialReference = esriMap.SpatialReference }); // bottom right of map screen pc.Add(new MapPoint() { X = extent.XMin, Y = extent.YMin, SpatialReference = esriMap.SpatialReference }); // bottom left of map screen pc.Add(new MapPoint() { X = extent.XMin, Y = extent.YMax, SpatialReference = esriMap.SpatialReference }); // top left of map screen to close polygon Polygon polygon = new Polygon() { SpatialReference = esriMap.SpatialReference }; polygon.Rings.Add(pc); return polygon; } void rTask_Failed(object sender, TaskFailedEventArgs e) { MessageBox.Show(e.Error.Message); } }
Membros conectados podem postar, seguir atualizações e mais. Novo aqui? Registre uma conta gratuita.
Find useful guides, FAQs, and documents to help you navigate and make the most of Esri Community.