private void MyMap_MapGesture(object sender, ESRI.ArcGIS.Client.Map.MapGestureEventArgs e) { if (e.Gesture == GestureType.Tap) { FeatureLayer featureLayer = MyMap.Layers["MyFeatureLayer"] as FeatureLayer; IEnumerable <Graphic> selected = e.DirectlyOver(10, new GraphicsLayer[] { featureLayer }); foreach (Graphic g in selected) { MyInfoWindow.Anchor = e.MapPoint; MyInfoWindow.IsOpen = true; //Since a ContentTemplate is defined (in XAML), Content will define the DataContext for the ContentTemplate MyInfoWindow.Content = g; return; } InfoWindow window = new InfoWindow() { Anchor = e.MapPoint, Padding = new Thickness(3), Map = MyMap, IsOpen = true, Placement = InfoWindow.PlacementMode.Auto, ContentTemplate = LayoutRoot.Resources["LocationInfoWindowTemplate"] as System.Windows.DataTemplate, //Since a ContentTemplate is defined, Content will define the DataContext for the ContentTemplate Content = new ESRI.ArcGIS.Client.Geometry.MapPoint( double.Parse(e.MapPoint.X.ToString("0.000")), double.Parse(e.MapPoint.Y.ToString("0.000"))) }; LayoutRoot.Children.Add(window); } }
private void Map_MapGesture(object sender, ESRI.ArcGIS.Client.Map.MapGestureEventArgs e) { if (e.Gesture == GestureType.Tap) { _tapPoint = e.MapPoint; _dispatcherTimer.Interval = new TimeSpan(0, 0, 0, 0, 350); _dispatcherTimer.Tick -= dispatcherTimer_Tick; _dispatcherTimer.Tick += dispatcherTimer_Tick; _dispatcherTimer.Start(); } else if (e.Gesture == GestureType.DoubleTap) { _dispatcherTimer.Stop(); } }
private void MyMap_MapGesture(object sender, ESRI.ArcGIS.Client.Map.MapGestureEventArgs e) { if (e.Gesture == GestureType.Tap && !MyDrawObject.IsEnabled) { MyInfoWindow.IsOpen = false; GraphicsLayer pointsGraphicsLayer = MyMap.Layers["MyPointGraphicsLayer"] as GraphicsLayer; GraphicsLayer polygonsGraphicsLayer = MyMap.Layers["MyPolygonGraphicsLayer"] as GraphicsLayer; IEnumerable <Graphic> selected = e.DirectlyOver(10, new GraphicsLayer[] { pointsGraphicsLayer, polygonsGraphicsLayer }); foreach (Graphic g in selected) { MyInfoWindow.Anchor = e.MapPoint; MyInfoWindow.IsOpen = true; MyInfoWindow.Content = g; return; } } }
private void MyMap_MapGesture(object sender, ESRI.ArcGIS.Client.Map.MapGestureEventArgs e) { if (e.Gesture == GestureType.Tap) { MyInfoWindow.IsOpen = false; FeatureLayer featureLayer = MyMap.Layers["MyFeatureLayer"] as FeatureLayer; IEnumerable <Graphic> selected = e.DirectlyOver(10, new GraphicsLayer[] { featureLayer }); foreach (Graphic g in selected) { MyInfoWindow.Anchor = e.MapPoint; MyInfoWindow.IsOpen = true; MyInfoWindow.DataContext = g.Attributes; return; } } }
private void MyMap_MapGesture(object sender, ESRI.ArcGIS.Client.Map.MapGestureEventArgs e) { if (e.Gesture == GestureType.Tap) { GraphicsLayer glayer = MyMap.Layers["MySelectionGraphicsLayer"] as GraphicsLayer; glayer.Graphics.Clear(); MyInfoWindow.IsOpen = false; double mapScale = MyMap.Scale; ArcGISTiledMapServiceLayer alayer = null; DataTemplate dt = null; int layid = 0; foreach (Layer layer in MyMap.Layers) { if (layer.GetValue(Document.PopupTemplatesProperty) != null) { alayer = layer as ArcGISTiledMapServiceLayer; IDictionary <int, DataTemplate> idict = layer.GetValue(Document.PopupTemplatesProperty) as IDictionary <int, DataTemplate>; foreach (LayerInfo linfo in alayer.Layers) { if (((mapScale > linfo.MaxScale && // in scale range mapScale < linfo.MinScale) || (linfo.MaxScale == 0.0 && // no scale dependency linfo.MinScale == 0.0) || (mapScale > linfo.MaxScale && // minscale = 0.0 = infinity linfo.MinScale == 0.0)) && idict.ContainsKey(linfo.ID)) // id present in dictionary { layid = linfo.ID; dt = idict[linfo.ID]; break; } } } } if (dt != null) { QueryTask qt = new QueryTask(string.Format("{0}/{1}", alayer.Url, layid)); qt.ExecuteCompleted += (s, qe) => { if (qe.FeatureSet.Features.Count > 0) { Graphic g = qe.FeatureSet.Features[0]; MyInfoWindow.Anchor = e.MapPoint; MyInfoWindow.ContentTemplate = dt; MyInfoWindow.Content = g.Attributes; MyInfoWindow.IsOpen = true; SolidColorBrush symbolColor = new SolidColorBrush(Colors.Cyan); if (g.Geometry is Polygon || g.Geometry is Envelope) { g.Symbol = new SimpleFillSymbol() { BorderBrush = symbolColor, BorderThickness = 2 }; } else if (g.Geometry is Polyline) { g.Symbol = new SimpleLineSymbol() { Color = symbolColor }; } else // Point { g.Symbol = new SimpleMarkerSymbol() { Color = symbolColor, Size = 12 }; } glayer.Graphics.Add(g); } }; ESRI.ArcGIS.Client.Tasks.Query query = new ESRI.ArcGIS.Client.Tasks.Query(); query.Geometry = e.MapPoint; query.OutSpatialReference = MyMap.SpatialReference; query.OutFields.Add("*"); query.ReturnGeometry = true; qt.ExecuteAsync(query); } } }