1 <UserControl xmlns:esri="http://schemas.esri.com/arcgis/client/2009" x:Class="FeatureServiceWithPopups.MainPage" 2 xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 3 xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 4 xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 5 xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 6 mc:Ignorable="d" 7 d:DesignHeight="300" d:DesignWidth="400"> 8 9 <Grid x:Name="LayoutRoot" Background="White"> 10 <esri:Map x:Name="MyMap" /> 11 12 <esri:InfoWindow x:Name="MyInfoWindow" 13 Padding="2" 14 CornerRadius="10" 15 Map="{Binding ElementName=MyMap}" > 16 <esri:InfoWindow.Background> 17 <LinearGradientBrush EndPoint="1.038,1.136" StartPoint="0.015,0.188"> 18 <GradientStop Color="#FFD1DFF2"/> 19 <GradientStop Color="#FF666666" Offset="0.946"/> 20 </LinearGradientBrush> 21 </esri:InfoWindow.Background> 22 </esri:InfoWindow> 23 24 <Grid HorizontalAlignment="Right" VerticalAlignment="Top" Margin="0,15,15,0" > 25 <Rectangle Fill="#77919191" Stroke="Gray" RadiusX="10" RadiusY="10" Margin="0,0,0,5" > 26 <Rectangle.Effect> 27 <DropShadowEffect/> 28 </Rectangle.Effect> 29 </Rectangle> 30 <Rectangle Fill="#FFFFFFFF" Stroke="DarkGray" RadiusX="5" RadiusY="5" Margin="10,10,10,15" /> 31 <StackPanel Orientation="Vertical" Margin="25,20,25,25"> 32 <TextBlock Text="Display Attributes In:" Foreground="Black" FontWeight="Bold" FontSize="12" Margin="3" /> 33 <RadioButton GroupName="MyRadioButtons" Checked="MapTipRadioButton_Checked" IsChecked="True" Content="Map Tip" Margin="2" /> 34 <RadioButton GroupName="MyRadioButtons" Checked="InfoWindowRadioButton_Unchecked" Content="Info Window" Margin="2"/> 35 </StackPanel> 36 </Grid> 37 38 </Grid> 39 </UserControl>
1 using ESRI.ArcGIS.Client; 2 using ESRI.ArcGIS.Client.Geometry; 3 using ESRI.ArcGIS.Client.WebMap; 4 using System; 5 using System.Collections.Generic; 6 using System.Linq; 7 using System.Net; 8 using System.Windows; 9 using System.Windows.Controls; 10 using System.Windows.Documents; 11 using System.Windows.Input; 12 using System.Windows.Media; 13 using System.Windows.Media.Animation; 14 using System.Windows.Shapes; 15 16 namespace FeatureServiceWithPopups 17 { 18 public partial class MainPage : UserControl 19 { 20 Dictionary<string, FrameworkElement> mapTipsElements = new Dictionary<string, FrameworkElement>(); 21 MapPoint lastPoint = null; 22 23 24 public MainPage() 25 { 26 InitializeComponent(); 27 Document webMap = new Document(); 28 webMap.GetMapCompleted += webMap_GetMapCompleted; 29 30 webMap.GetMapAsync("921e9016d2a5423da8bd08eb306e4e0e"); 31 32 } 33 void webMap_GetMapCompleted(object sender, GetMapCompletedEventArgs e) 34 { 35 if (e.Error == null) 36 { 37 MyMap.Extent = e.Map.Extent; 38 int i = 0; 39 40 LayerCollection layerCollection = new LayerCollection(); 41 foreach (Layer layer in e.Map.Layers) 42 { 43 layer.ID = i.ToString(); 44 if (layer is FeatureLayer) 45 { 46 mapTipsElements.Add(layer.ID, (layer as FeatureLayer).MapTip); 47 } 48 layerCollection.Add(layer); 49 i++; 50 } 51 52 e.Map.Layers.Clear(); 53 MyMap.Layers = layerCollection; 54 } 55 } 56 private void MapTipRadioButton_Checked(object sender, RoutedEventArgs e) 57 { 58 if (MyMap != null) 59 { 60 MyInfoWindow.IsOpen = false; 61 foreach (Layer layer in MyMap.Layers) 62 { 63 if (layer is FeatureLayer) 64 (layer as FeatureLayer).MouseLeftButtonUp -= WebMapFeatureServicePopups_MouseLeftButtonUp; 65 if (mapTipsElements.ContainsKey(layer.ID)) 66 (layer as FeatureLayer).MapTip = mapTipsElements[layer.ID]; 67 } 68 } 69 } 70 71 private void InfoWindowRadioButton_Unchecked(object sender, RoutedEventArgs e) 72 { 73 foreach (Layer layer in MyMap.Layers) 74 if (layer is FeatureLayer) 75 { 76 (layer as FeatureLayer).MapTip = null; 77 (layer as FeatureLayer).MouseLeftButtonUp += WebMapFeatureServicePopups_MouseLeftButtonUp; 78 } 79 } 80 81 void WebMapFeatureServicePopups_MouseLeftButtonUp(object sender, GraphicMouseButtonEventArgs e) 82 { 83 FeatureLayer flayer = sender as FeatureLayer; 84 MapPoint clickPoint = MyMap.ScreenToMap(e.GetPosition(MyMap)); 85 86 if (clickPoint != lastPoint) 87 { 88 if (flayer.GetValue(Document.PopupTemplateProperty) != null) 89 { 90 DataTemplate dt = flayer.GetValue(Document.PopupTemplateProperty) as DataTemplate; 91 92 MyInfoWindow.Anchor = clickPoint; 93 MyInfoWindow.ContentTemplate = dt; 94 MyInfoWindow.Content = e.Graphic.Attributes; 95 MyInfoWindow.IsOpen = true; 96 lastPoint = clickPoint; 97 } 98 } 99 100 } 101 } 102 }