Пример #1
0
        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é";
                }
            }
        }