private void myMap_MouseRightButtonDown(object sender, MouseButtonEventArgs e) { listBox.UnselectAll(); X_box.Text = ""; Y_box.Text = ""; Point mousepnt = e.GetPosition(this); mousepnt.Y -= 47; mousepnt.X -= 105; Location mapMouse = myMap.ViewportPointToLocation(mousepnt); if (add) { coord.Add(new Coordonnees(mapMouse.Longitude, mapMouse.Latitude)); loc.Add(new Location(coord[nbCoord].Y, coord[nbCoord].X)); StatusText.Text = coord[nbCoord].ToString(); if (!(bool)RadioPOI.IsChecked) { nbCoord++; } if ((bool)RadioLine.IsChecked) { Boutton_valider.Visibility = Visibility.Hidden; if (prevRadio != 1) { Desc_Box.Text = ""; listBox.UnselectAll(); } if ((Keyboard.Modifiers & ModifierKeys.Control) > 0 && coord.Count > 1) { nbItems++; SolidColorBrush newBrush = (SolidColorBrush)superCombo.SelectedColor; Polyline polyline = new Polyline(coord, newBrush.Color, 2); userData.Add(polyline); MapPolyline mapPolyline = new MapPolyline { Locations = loc, Stroke = newBrush, SnapsToDevicePixels = true }; coord = new List <Coordonnees>(); loc = new LocationCollection(); nbCoord = 0; myMap.Children.Add(mapPolyline); if (String.IsNullOrEmpty(Desc_Box.Text)) { listBox.Items.Add("Polyline" + nbItems); } else { listBox.Items.Add(Desc_Box.Text); } Desc_Box.Text = ""; StatusText.Text = "Polyline ajouté"; } } if ((bool)RadioGone.IsChecked) { Boutton_valider.Visibility = Visibility.Hidden; if (prevRadio != 2) { Desc_Box.Text = ""; listBox.UnselectAll(); } if ((Keyboard.Modifiers & ModifierKeys.Control) > 0 && coord.Count > 1) { nbItems++; coord.Add(coord[0]); loc.Add(loc[0]); SolidColorBrush newBrush = (SolidColorBrush)superCombo.SelectedColor; Polygon polygon = new Polygon(coord, newBrush.Color, newBrush.Color, 0.3); userData.Add(polygon); MapPolygon mapPolygon = new MapPolygon { Locations = loc, Stroke = newBrush, SnapsToDevicePixels = true, }; mapPolygon.Fill = new SolidColorBrush(polygon.Bgcolor) { Opacity = 0.3 }; coord = new List <Coordonnees>(); loc = new LocationCollection(); nbCoord = 0; myMap.Children.Add(mapPolygon); if (String.IsNullOrEmpty(Desc_Box.Text)) { listBox.Items.Add("Polygon" + nbItems); } else { listBox.Items.Add(Desc_Box.Text); } Desc_Box.Text = ""; StatusText.Text = "Polygone ajouté"; } } if ((bool)RadioPOI.IsChecked) { if (prevRadio != 3) { Desc_Box.Text = ""; listBox.UnselectAll(); superCombo.Visibility = Visibility.Hidden; } Pushpin pin = new Pushpin(); POI poi = new POI(); pin.Location = loc[0]; poi = new POI(Desc_Box.Text, coord[nbCoord].X, coord[nbCoord].Y); if (String.IsNullOrEmpty(poi.Description)) { poi.Description = "POI" + nbPoi; } userData.Add(poi); coord = new List <Coordonnees>(); loc = new LocationCollection(); nbCoord = 0; myMap.Children.Add(pin); listBox.Items.Add(poi.Description); Desc_Box.Text = ""; nbPoi++; StatusText.Text = "POI ajouté"; } } if (modify) { int i = 0; foreach (CartoObj o in userData.Liste) { if (o.IsPointClose(mapMouse.Longitude, mapMouse.Latitude, 0.2)) { break; } else { i++; } } listBox.SelectedIndex = i; Boutton_valider.Visibility = Visibility.Visible; if (listBox.SelectedIndex >= 0) { Desc_Box.Text = listBox.SelectedItem.ToString(); if (userData.Liste[listBox.SelectedIndex] is POI) { superCombo.Visibility = Visibility.Hidden; } } } if (delete && userData.Liste.Count > 0) { int i = 0; foreach (CartoObj o in userData.Liste) { if (o.IsPointClose(mapMouse.Longitude, mapMouse.Latitude, 0.2)) { break; } else { i++; } } Console.WriteLine(i); if (i <= listBox.Items.Count - 1) { if (myMap.Children[i] is MapShapeBase) { nbItems--; } else if (myMap.Children[i] is Pushpin) { nbPoi--; } StatusText.Text = listBox.Items[i].ToString() + " supprimé"; listBox.Items.RemoveAt(i); myMap.Children.RemoveAt(i); userData.Liste.RemoveAt(i); listBox.UnselectAll(); Desc_Box.Text = ""; } else { StatusText.Text = "Aucun objet a proximité"; } } }