Display an alert message when a graphic is clicked.

Use case
A user may wish to select a graphic on a map to view relevant information about it.
How to use the sample
Select a graphic to identify it. You will see an alert message displayed.
How it works
- Create a
GraphicsOverlayand add it to theMapView. - Add a
Graphicalong with aSimpleFillSymbolto the graphics overlay. - Create a
Pointfrom the location clicked on the map view by the user. - Identify the graphic on the map view with
IdentifyGraphicsOverlayAsync(graphicsOverlay, pointClicked, tolerance, max results).
Relevant API
- Graphic
- GraphicsOverlay
- MapView
Tags
graphics, identify
Sample Code
<UserControl x:Class="ArcGIS.WPF.Samples.IdentifyGraphics.IdentifyGraphics" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:esri="http://schemas.esri.com/arcgis/runtime/2013"> <Grid> <esri:MapView x:Name="MyMapView" /> <Border Style="{StaticResource BorderStyle}"> <TextBlock HorizontalAlignment="Center" FontWeight="SemiBold" Text="Tap to identify the graphic." /> </Border> </Grid></UserControl>// Copyright 2016 Esri.//// Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License.// You may obtain a copy of the License at: http://www.apache.org/licenses/LICENSE-2.0//// Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific// language governing permissions and limitations under the License.
using Esri.ArcGISRuntime.Data;using Esri.ArcGISRuntime.Geometry;using Esri.ArcGISRuntime.Mapping;using Esri.ArcGISRuntime.Symbology;using Esri.ArcGISRuntime.UI;using Esri.ArcGISRuntime.UI.Controls;using System;using System.Drawing;using System.Windows;
namespace ArcGIS.WPF.Samples.IdentifyGraphics{ [ArcGIS.Samples.Shared.Attributes.Sample( name: "Identify graphics", category: "GraphicsOverlay", description: "Display an alert message when a graphic is clicked.", instructions: "Select a graphic to identify it. You will see an alert message displayed.", tags: new[] { "graphics", "identify" })] public partial class IdentifyGraphics { // Graphics overlay to host graphics private GraphicsOverlay _polygonOverlay;
public IdentifyGraphics() { InitializeComponent();
// Create the UI, setup the control references and execute initialization Initialize(); }
private void Initialize() { // Create a map with 'Imagery with Labels' basemap and an initial location Map myMap = new Map(BasemapStyle.ArcGISTopographic);
// Create graphics overlay with graphics CreateOverlay();
// Hook into tapped event MyMapView.GeoViewTapped += OnMapViewTapped;
// Assign the map to the MapView MyMapView.Map = myMap; }
private void CreateOverlay() { // Create polygon builder and add polygon corners into it PolygonBuilder builder = new PolygonBuilder(SpatialReferences.WebMercator); builder.AddPoint(new MapPoint(-20e5, 20e5)); builder.AddPoint(new MapPoint(20e5, 20e5)); builder.AddPoint(new MapPoint(20e5, -20e5)); builder.AddPoint(new MapPoint(-20e5, -20e5));
// Get geometry from the builder Polygon polygonGeometry = builder.ToGeometry();
// Create symbol for the polygon SimpleFillSymbol polygonSymbol = new SimpleFillSymbol( SimpleFillSymbolStyle.Solid, Color.Yellow, null);
// Create new graphic Graphic polygonGraphic = new Graphic(polygonGeometry, polygonSymbol);
// Create overlay to where graphics are shown _polygonOverlay = new GraphicsOverlay(); _polygonOverlay.Graphics.Add(polygonGraphic);
// Add created overlay to the MapView MyMapView.GraphicsOverlays.Add(_polygonOverlay); }
private async void OnMapViewTapped(object sender, GeoViewInputEventArgs e) { double tolerance = 10d; // Use larger tolerance for touch int maximumResults = 1; // Only return one graphic bool onlyReturnPopups = false; // Return more than popups
try { // Use the following method to identify graphics in a specific graphics overlay IdentifyGraphicsOverlayResult identifyResults = await MyMapView.IdentifyGraphicsOverlayAsync( _polygonOverlay, e.Position, tolerance, onlyReturnPopups, maximumResults);
// Check if we got results if (identifyResults.Graphics.Count > 0) { // Display to the user the identify worked. MessageBox.Show("Tapped on graphic", ""); } } catch (Exception ex) { MessageBox.Show(ex.ToString(), "Error"); } } }}