private void GetCoordonneesAndLocationNearClick(Location clickLocation, ref Coordonnees newCoordonnee, ref Location newLocation) { bool stop = false; Coordonnees clickCoordonnees = new Coordonnees(clickLocation.Latitude, clickLocation.Longitude); for (int i = MapData.ICartoObjs.Count() - 1; i >= 0 && !stop; i--) // Reverse loop because the last element is the first showed on screen { ICartoObj iCartoObj = MapData.ICartoObjs[i]; if (iCartoObj is POI poi) // POI (Pushpin) { if (poi.IsPointClose(clickCoordonnees, _PRECISION)) { newCoordonnee.Latitude = poi.Latitude; newCoordonnee.Longitude = poi.Longitude; newLocation.Latitude = poi.Latitude; newLocation.Longitude = poi.Longitude; stop = true; } } else // Polyline or Polygon (Coords of the element) { IPointy iPointy = iCartoObj as IPointy; for (int j = iPointy.Coordonnees.Count() - 1; j >= 0 && !stop; j--) // Reverse loop because the last element is the first showed on screen { Coordonnees currentCoord = iPointy.Coordonnees[j]; if (currentCoord.IsPointClose(clickCoordonnees, _PRECISION)) { newCoordonnee.Latitude = currentCoord.Latitude; newCoordonnee.Longitude = currentCoord.Longitude; newLocation.Latitude = currentCoord.Latitude; newLocation.Longitude = currentCoord.Longitude; stop = true; } } } } }
private void Map_DoubleClick(object sender, MouseEventArgs e) { Console.WriteLine("Double click!"); Point mousePosition = e.GetPosition(Map); Location mouseLocation = Map.ViewportPointToLocation(mousePosition); bool pinPresent = false; //Tester si on click sur une pin for (int i = 0; i < myPersonalMapData.ObservableCollection.Count; i++) { ICartoObj obj = myPersonalMapData.ObservableCollection[i]; if (obj is POI) { Coordonnees coords = new Coordonnees(((POI)obj).Latitude, ((POI)obj).Longitude); if (coords.IsPointClose(new Coordonnees(mouseLocation.Latitude, mouseLocation.Longitude), 0.001)) { Console.WriteLine("trouve: des = {0}", ((POI)obj).Description); PoiWindow poiWindow = new PoiWindow((POI)obj); poiWindow.ShowDialog(); myPersonalMapData.ObservableCollection[i] = poiWindow.Poi; poiWindow.Close(); pinPresent = true; break; } } if (obj is Polyline) { foreach (ICartoObj cartoObj in ((Polyline)obj).Collection) { if (((Coordonnees)cartoObj).IsPointClose(new Coordonnees(mouseLocation.Latitude, mouseLocation.Longitude), 0.001)) { ListBox.SelectedItem = ((Polyline)obj).Description; PolylineWindow polylineWindow = new PolylineWindow((Polyline)obj); polylineWindow.ShowDialog(); myPersonalMapData.ObservableCollection[ListBox.SelectedIndex] = polylineWindow.Polyline; polylineWindow.Close(); pinPresent = true; break; } } } e.Handled = true; } if (!pinPresent) { //Créé une pin ou trajet POI poi = new POI("", new Coordonnees(mouseLocation.Latitude, mouseLocation.Longitude)); PoiWindow poiWindow = new PoiWindow(); poiWindow.Latitude = poi.Latitude.ToString(); poiWindow.Longitude = poi.Longitude.ToString(); poiWindow.Description = ""; poiWindow.ShowDialog(); if (poiWindow.Poi != null) { myPersonalMapData.ObservableCollection.Add(poiWindow.Poi); } poiWindow.Close(); } UpdateMainWindow(); }
static void Main(string[] args) { Console.WriteLine("------------------------------------------------------------"); Console.WriteLine("---------créer et afficher 2 objets de chaque sorte---------"); Console.WriteLine("------------------------------------------------------------"); Console.WriteLine("------------------COORDONNEES------------------"); Coordonnees C1 = new Coordonnees(); Console.WriteLine("Constructeur par defaut de Coordonnees : C1"); Console.WriteLine(C1.ToString()); Console.WriteLine("Methode DRAW"); C1.Draw(); Console.WriteLine("C1 lat = 1, long = 1"); C1.Latitude = 1; C1.Longitude = 1; Console.WriteLine(C1.ToString()); Console.WriteLine("Methode DRAW"); C1.Draw(); Coordonnees C2 = new Coordonnees(1, 2); Console.WriteLine("Constructeur initialisation Coordonnees : C2(1, 2)"); Console.WriteLine(C2.ToString()); Console.WriteLine("Methode DRAW"); C2.Draw(); bool returnIsPointClose; Console.WriteLine("IsPointClose entre C1(lat/long) : " + C1.Latitude + "/" + C1.Longitude + " et C2(lat/long) : " + C2.Latitude + " / " + C2.Longitude); Console.WriteLine("Precision = 1.0"); returnIsPointClose = C1.IsPointClose(C2, 1.0); if (returnIsPointClose) { Console.WriteLine("Point proche..."); } else { Console.WriteLine("Point pas proche..."); } Console.WriteLine("IsPointClose entre C1(lat/long) : " + C1.Latitude + "/" + C1.Longitude + " et C2(lat/long) : " + C2.Latitude + " / " + C2.Longitude); Console.WriteLine("Precision = 0.1"); returnIsPointClose = C1.IsPointClose(C2, 0.1); if (returnIsPointClose) { Console.WriteLine("Point proche..."); } else { Console.WriteLine("Point pas proche..."); } Console.WriteLine("------------------POI------------------"); POI Sraing = new POI(); Console.WriteLine(Sraing.ToString()); Console.WriteLine("Latitude" + Sraing.Latitude); Console.WriteLine("Longitude" + Sraing.Longitude); Console.WriteLine("Methode DRAW"); Sraing.Draw(); Console.WriteLine("IsPointClose entre Sraing(lat/long) : " + Sraing.Latitude + "/" + Sraing.Longitude + " et C2(lat/long) : " + C2.Latitude + " / " + C2.Longitude); Console.WriteLine("Precision = 100"); returnIsPointClose = Sraing.IsPointClose(C2, 100); if (returnIsPointClose) { Console.WriteLine("Point proche..."); } else { Console.WriteLine("Point pas proche..."); } Console.WriteLine("IsPointClose entre Sraing(lat/long) : " + Sraing.Latitude + "/" + Sraing.Longitude + " et C2(lat/long) : " + C2.Latitude + " / " + C2.Longitude); Console.WriteLine("Precision = 10"); returnIsPointClose = Sraing.IsPointClose(C2, 10); if (returnIsPointClose) { Console.WriteLine("Point proche..."); } else { Console.WriteLine("Point pas proche..."); } Console.WriteLine("------------------POLYLINE------------------"); List <Coordonnees> tabCoordonnees = new List <Coordonnees>(); tabCoordonnees.Add(C1); tabCoordonnees.Add(C2); Polyline P1 = new Polyline(tabCoordonnees, Colors.Red, 5); Console.WriteLine("Polyline avec C1 et C2, red, 5..."); Console.WriteLine(P1); Console.WriteLine("Methode DRAW"); P1.Draw(); Polyline P2 = new Polyline(); Console.WriteLine("Polyline constructeur par defaut"); Console.WriteLine(P2.ToString()); Console.WriteLine("Polyline nbr de coordonnees differentes : "); Console.WriteLine("P2: "); Console.WriteLine(P2.GetNbPoints()); Console.WriteLine("P1: "); Console.WriteLine(P1.GetNbPoints()); Console.WriteLine("P1 --> changement de coordonnees : Coordonnees[] tabCoordonnees2 = { C1, C2, C1 };"); List <Coordonnees> tabCoordonnees2 = new List <Coordonnees>(); tabCoordonnees2.Add(C1); tabCoordonnees2.Add(C2); tabCoordonnees2.Add(C1); P1.CollectionDeCoordonnes = tabCoordonnees2; Console.WriteLine("P1: "); Console.WriteLine(P1.GetNbPoints()); Console.WriteLine("Polyline P3 avec comme coordonnees (lat,long): (1,1) / (2,3) / (3,1)"); List <Coordonnees> triangle = new List <Coordonnees>(); triangle.Add(new Coordonnees(1, 1)); triangle.Add(new Coordonnees(2, 3)); triangle.Add(new Coordonnees(3, 1)); Polyline P3 = new Polyline(triangle, Colors.Green, 1); Coordonnees pointEN22 = new Coordonnees(2, 2); Console.WriteLine("IsPointClose entre P3 et pointEN22 (lat/long) : " + pointEN22.Latitude + " / " + pointEN22.Longitude); Console.WriteLine("Precision = 0.5"); returnIsPointClose = P3.IsPointClose(pointEN22, 0.5); if (returnIsPointClose) { Console.WriteLine("Point proche..."); } else { Console.WriteLine("Point pas proche..."); } Console.WriteLine("Meme IsPointClose MAIS avec une precision de 1.0"); returnIsPointClose = P3.IsPointClose(pointEN22, 1); if (returnIsPointClose) { Console.WriteLine("Point proche..."); } else { Console.WriteLine("Point pas proche..."); } Polyline droiteTest = new Polyline(); droiteTest.CollectionDeCoordonnes.Add(new Coordonnees(1, 1)); droiteTest.CollectionDeCoordonnes.Add(new Coordonnees(4, 2)); Console.WriteLine("Coordonnées de la droite : "); droiteTest.Draw(); Console.WriteLine("IsPointClose avec cette droite : avec 2,2 et une precision de 1"); Console.WriteLine("return de isPointClose : {0}", droiteTest.IsPointClose(new Coordonnees(2, 2), 1.0)); Console.WriteLine(); Console.WriteLine("IsPointClose avec cette droite : {0} avec 2,3 et une precision de 1", droiteTest.ToString()); Console.WriteLine("return de isPointClose : {0}", droiteTest.IsPointClose(new Coordonnees(2, 3), 1.0)); Console.WriteLine("------------------POLYGON------------------"); Polygon PN1 = new Polygon(tabCoordonnees, Colors.BurlyWood, Colors.Transparent, 0.5); Console.WriteLine("Polygon avec C1 et C2, couleur remplissage=BurlyWood, couleur de contour=Transparent, opacite = 0.5"); Console.WriteLine(PN1); Console.WriteLine("Methode DRAW"); PN1.Draw(); Console.WriteLine("set de opacite à 10 (interdit)"); PN1.Opacite = 10; Console.WriteLine("nouvelle valeur de opacite : " + PN1.Opacite); Console.WriteLine("constructeur avec opacite à -1 (interdit)"); Polygon PN3 = new Polygon(tabCoordonnees, Colors.BurlyWood, Colors.Transparent, -1); Console.WriteLine(PN3); Polygon PN2 = new Polygon(); Console.WriteLine("Polygon constructeur par defaut"); Console.WriteLine(PN2); Console.WriteLine("Methode DRAW"); PN2.Draw(); Console.WriteLine("Polygon nbr de coordonnees differentes : "); Console.WriteLine("PN2: "); Console.WriteLine(PN2.GetNbPoints()); Console.WriteLine("PN1: "); Console.WriteLine(PN1.GetNbPoints()); Console.WriteLine("PN1 --> changement de coordonnees : Coordonnees[] tabCoordonnees3 = { C1, C2, C1, new Coordonnees(19, 9) };"); List <Coordonnees> tabCoordonnees3 = new List <Coordonnees>(); tabCoordonnees3.Add(C1); tabCoordonnees3.Add(C2); tabCoordonnees3.Add(C1); tabCoordonnees3.Add(new Coordonnees(19, 9)); PN1._collectionDeCoordonnees = tabCoordonnees3; Console.WriteLine("PN1: "); Console.WriteLine(PN1.GetNbPoints()); Console.WriteLine("Polygon PNtriangle avec comme coordonnees (lat,long): (1,1) / (2,3) / (3,1)"); Polygon PNtriangle = new Polygon(triangle, Colors.DarkRed, Colors.Blue, 50.0); Coordonnees pointEN42 = new Coordonnees(4, 2); Console.WriteLine("IsPointClose entre PNtriangle et pointEN42 (lat/long) : " + pointEN42.Latitude + " / " + pointEN42.Longitude); Console.WriteLine("Precision = 1.0"); returnIsPointClose = PNtriangle.IsPointClose(pointEN42, 1.0); if (returnIsPointClose) { Console.WriteLine("Point proche..."); } else { Console.WriteLine("Point pas proche..."); } Console.WriteLine("IsPointClose entre PNtriangle et pointEN22 (lat/long) : " + pointEN22.Latitude + " / " + pointEN22.Longitude); Console.WriteLine("Precision = 1.0"); returnIsPointClose = PNtriangle.IsPointClose(pointEN22, 1.0); if (returnIsPointClose) { Console.WriteLine("Point proche..."); } else { Console.WriteLine("Point pas proche..."); } Console.WriteLine("-------------------------------------------------------------------------------------------------------"); Console.WriteLine("---------ajouter ses objets dans une liste générique d'objet de type CartoOjb (List<CartoObj>)---------"); Console.WriteLine("-------------------------------------------------------------------------------------------------------"); List <CartoObj> listeDeCartoObj = new List <CartoObj>(); listeDeCartoObj.Add(C1); listeDeCartoObj.Add(C2); listeDeCartoObj.Add(Sraing); listeDeCartoObj.Add(P1); listeDeCartoObj.Add(P2); listeDeCartoObj.Add(PN1); listeDeCartoObj.Add(PN2); listeDeCartoObj.Add(PN3); Console.WriteLine(); Console.WriteLine("----------------------------------------------------------------------"); Console.WriteLine("---------afficher cette liste en utilisant le mot clé foreach---------"); Console.WriteLine("----------------------------------------------------------------------"); int i = 0; foreach (CartoObj o in listeDeCartoObj) { Console.Write("Elm[{0}]", i); o.Draw(); Console.WriteLine(); i++; } Console.WriteLine(); Console.WriteLine("-------------------------------------------------------------------------------"); Console.WriteLine("---------afficher la liste des objets implémentant l'interface IPointy---------"); Console.WriteLine("-------------------------------------------------------------------------------"); i = 0; foreach (CartoObj o in listeDeCartoObj) { if (o is IPointy) { Console.Write("Elm[{0}]", i); i++; o.Draw(); Console.WriteLine(); } } Console.WriteLine(); Console.WriteLine("-----------------------------------------------------------------------------------------"); Console.WriteLine("---------afficher la liste des objets qui n'implémentent pas l'interface IPointy---------"); Console.WriteLine("-----------------------------------------------------------------------------------------"); i = 0; foreach (CartoObj o in listeDeCartoObj) { if (!(o is IPointy)) { Console.Write("Elm[{0}]", i); i++; o.Draw(); Console.WriteLine(); } } Console.WriteLine(); Console.WriteLine("---------------------------------------------------------------------"); Console.WriteLine("---------Créer une liste générique de 5 Polyline, l’afficher---------"); Console.WriteLine("---------------------------------------------------------------------"); List <Polyline> listeGeneriquePolyline = new List <Polyline>(); listeGeneriquePolyline.Add(P1); P2.CollectionDeCoordonnes = tabCoordonnees3; listeGeneriquePolyline.Add(P2); listeGeneriquePolyline.Add(P3); listeGeneriquePolyline.Add(new Polyline(tabCoordonnees, Colors.Black, 19)); i = 0; foreach (Polyline P in listeGeneriquePolyline) { Console.WriteLine("listeGeneriquePolyline[{0}]", i); P.Draw(); Console.WriteLine(); i++; } Console.WriteLine(); Console.WriteLine("-----------------------------------------------------------------------------------"); Console.WriteLine("---------la trier par ordre de longueur croissante1 , l’afficher à nouveau---------"); Console.WriteLine("-----------------------------------------------------------------------------------"); listeGeneriquePolyline.Sort(); i = 0; foreach (Polyline P in listeGeneriquePolyline) { Console.WriteLine("listeGeneriquePolyline[{0}]", i); Console.WriteLine("longueur totale : {0}", P.longueurPolyline()); P.Draw(); Console.WriteLine(); i++; } Console.WriteLine(); Console.WriteLine("-------------------------------------------------------------------------------------------------"); Console.WriteLine("---------la trier par ordre croissante de surface de bounding box , l’afficher à nouveau---------"); Console.WriteLine("-------------------------------------------------------------------------------------------------"); MyPolylineBoundingBoxComparer triParSurface = new MyPolylineBoundingBoxComparer(); listeGeneriquePolyline.Sort(triParSurface); i = 0; foreach (Polyline P in listeGeneriquePolyline) { Console.WriteLine("listeGeneriquePolyline[{0}]", i); Console.WriteLine("surface : {0}", P.surfaceBoundingBox()); P.Draw(); Console.WriteLine(); i++; } Console.WriteLine("Find P1 ? {0}", listeGeneriquePolyline.Find(x => x.Id == P1.Id)); Console.WriteLine(); Console.WriteLine("-------------------------------------------------------------------------------------------------------------------"); Console.WriteLine("---------la trier par ordre croissante de nombre d'objet (différent) de coordonnees , l’afficher à nouveau---------"); Console.WriteLine("-------------------------------------------------------------------------------------------------------------------"); NbrCoordonneesComparer triParNbrDeCoordonnees = new NbrCoordonneesComparer(); listeGeneriquePolyline.Sort(triParNbrDeCoordonnees); i = 0; foreach (Polyline P in listeGeneriquePolyline) { Console.WriteLine("listeGeneriquePolyline[{0}]", i); Console.WriteLine("nbr de coordonnees differentes : {0}", P.GetNbPoints()); P.Draw(); Console.WriteLine(); i++; } Console.WriteLine(); Console.WriteLine("-----------------------------------"); Console.WriteLine("---------MyPersonalMapData---------"); Console.WriteLine("-----------------------------------"); //MyPersonalMapData TestmyPersonalMapData = new MyPersonalMapData(); //Console.WriteLine("MyPersonalMapData : constructeur par defaut"); //Console.WriteLine(TestmyPersonalMapData.ToString()); //Console.WriteLine("\nConstructeur avec paramètres..."); //string nom; //Console.Write("Saisir votre nom : "); nom = Console.ReadLine(); //string prenom; //Console.Write("Saisir votre prenom : "); prenom = Console.ReadLine(); //string email; //Console.Write("Saisir votre email : "); email = Console.ReadLine(); ObservableCollection <ICartoObj> newObservableCollectionCartoObj = new ObservableCollection <ICartoObj>(); newObservableCollectionCartoObj.Add(Sraing); newObservableCollectionCartoObj.Add(P1); newObservableCollectionCartoObj.Add(PNtriangle); MyPersonalMapData Test2myPersonalMapData = new MyPersonalMapData("zeevaert", "arnaud", "*****@*****.**", newObservableCollectionCartoObj); Console.WriteLine("MyPersonalMapData : new MyPersonalMapData(zeevaert, arnaud, [email protected], listeDeCartoObj);"); Console.WriteLine(Test2myPersonalMapData.ToString()); //newObservableCollectionCartoObj.ge string inutile; inutile = Console.ReadLine(); }
static void Main(string[] args) { //Constructeur par defaut Coordonnees c1 = new Coordonnees(); POI poi1 = new POI(); Polyline PolyL1 = new Polyline(); Polygon PolyG1 = new Polygon(); //Constructeur d'initialisation Coordonnees c2 = new Coordonnees(2, 2); Coordonnees c3 = new Coordonnees(4, -2); Coordonnees c4 = new Coordonnees(1, -5); Coordonnees c5 = new Coordonnees(-3, 0); Coordonnees c6 = new Coordonnees(5, 5); POI poi2 = new POI("Magnée", c3); Coordonnees[] tab1 = { new Coordonnees(2, 0), new Coordonnees(-4, 0), new Coordonnees(-4, -4) }; Coordonnees[] tab2 = { c3, c2, c4, c5, c6 }; Coordonnees[] tab3 = { new Coordonnees(3, 3), new Coordonnees(3, 8), new Coordonnees(2, 8) }; Coordonnees[] tab4 = { new Coordonnees(-3, 3), new Coordonnees(0, 5), new Coordonnees(5, 2), new Coordonnees(2, -4), new Coordonnees(-2, -3) }; Coordonnees[] tabref = { new Coordonnees(0, 0), new Coordonnees(6, 0) }; Polyline PolyL2 = new Polyline(tab1, Colors.Blue, 10); Polygon PolyG2 = new Polygon(tab2, Colors.Lime, Colors.Aqua, 1); Polyline pol1 = new Polyline(tab1, Colors.Azure, 5); Polyline pol2 = new Polyline(tab2, Colors.CornflowerBlue, 2); Polyline pol3 = new Polyline(tab3, Colors.Coral, 7); Polyline pol4 = new Polyline(tab4, Colors.DarkRed, 9); Polyline Reference = new Polyline(tabref, Colors.DarkBlue, 2); MyPolylineBoundingBoxComparer pcomp = new MyPolylineBoundingBoxComparer(); CartoObjComparer ocomp = new CartoObjComparer(); //Liste générique List <CartoObj> cartoObj = new List <CartoObj>() { c1, c2, poi1, poi2, PolyL1, PolyL2, PolyG1, PolyG2 }; List <Polyline> polyline = new List <Polyline>() { pol1, pol2, pol3, pol4 }; Console.WriteLine("=============================================="); Console.WriteLine("------ c1 (Cpd) ---------"); Console.WriteLine(c1); Console.WriteLine("------ poi1 (Cpd) -------"); Console.WriteLine(poi1); Console.WriteLine("\n=============================================="); Console.WriteLine("------ c2 (Cinit) -------"); Console.WriteLine(c2); Console.WriteLine("------ poi2 (Cinit) -----"); Console.WriteLine(poi2); Console.WriteLine("\n=============================================="); Console.WriteLine("------ PolyL1 (Cpd) -----"); PolyL1.Draw(); Console.WriteLine("\n------ PolyG1 (Cpd) -----"); PolyG1.Draw(); Console.WriteLine("\n=============================================="); Console.WriteLine("------ PolyL2 (Cinit) -----"); PolyL2.Draw(); Console.WriteLine("\n------ PolyG2 (Cinit) -----"); PolyG2.Draw(); Console.WriteLine("\n=============================================="); Console.WriteLine("\nc1 IsPointClose c2"); Console.WriteLine("---> " + c1.IsPointClose(new Coordonnees(1, 6), 6)); Console.WriteLine("\npoi1 IsPointClose poi2"); Console.WriteLine("---> " + poi1.IsPointClose(poi2, 4.9)); Console.WriteLine("\nPolyline IsPointClose c"); Console.WriteLine("---> " + PolyL2.IsPointClose(new Coordonnees(-3, -4), 1.1)); Console.WriteLine("\nPolygon IsPointClose c"); Console.WriteLine("---> " + PolyG2.IsPointClose(new Coordonnees(-3, 3), 0)); Console.WriteLine("\nNbrPoint PolyLline"); Console.WriteLine("---> " + PolyL2.GetNumberOfPoint()); Console.WriteLine("\nNbrPoint Polygon"); Console.WriteLine("---> " + PolyG2.GetNumberOfPoint()); Console.WriteLine("\n=============================================="); Console.WriteLine("\nAffichage de la liste générique de CartoObj\n"); foreach (CartoObj c in cartoObj) { c.Draw(); } Console.WriteLine("\n=============================================="); Console.WriteLine("\nAffichage des CartoObj IPointy\n"); foreach (CartoObj c in cartoObj) { if (c is IPointy) { c.Draw(); Console.WriteLine("-----> is Ipointy\n"); } } Console.WriteLine("\n=============================================="); Console.WriteLine("\nAffichage des CartoObj qui ne sont pas IPointy\n"); foreach (CartoObj c in cartoObj) { if (!(c is IPointy)) { Console.WriteLine(c + " is not Ipointy"); } } Console.WriteLine("\n=============================================="); Console.WriteLine("\nAffichage de la liste générique de polyline\n"); foreach (Polyline p in polyline) { p.Draw(); Console.WriteLine("Longueur du Polyline = " + MathUtile.Longueur(p.Collection) + "\n"); } Console.WriteLine("\n=============================================="); Console.WriteLine("\nAffichage des polyline trier par ordre de longueur\n"); polyline.Sort(); foreach (Polyline p in polyline) { p.Draw(); Console.WriteLine("Longueur du Polyline = " + MathUtile.Longueur(p.Collection) + "\n"); } Console.WriteLine("\n=============================================="); Console.WriteLine("\nAffichage des polyline trier par ordre de surface de BoundingBox\n"); polyline.Sort(pcomp); foreach (Polyline p in polyline) { p.Draw(); Console.WriteLine("Surface de la BoundingBox = " + p.PolylineBoundingBox() + "\n"); } Console.WriteLine("\n=============================================="); Console.WriteLine("\nRecherche si une liste de Polyline contient un polyline de même longueur qu'un polyline de reference\n"); double longueur = MathUtile.Longueur(Reference.Collection); Polyline res = polyline.Find(x => MathUtile.Longueur(x.Collection) == longueur); if (res == null) { Console.WriteLine("Aucune Polyline trouver"); } else { Console.WriteLine("Longueur polyline de reference = " + longueur); Console.WriteLine("Longueur polyline trouver = " + MathUtile.Longueur(res.Collection)); res.Draw(); } Console.WriteLine("\n=============================================="); Console.WriteLine("\nAffichage des polyline qui sont proche d'un point\n"); int cpt = 0; foreach (Polyline p in polyline) { if ((p.IsPointClose(new Coordonnees(0, 0), 1)) == true) { Console.WriteLine("Ce polyline est proche du point"); p.Draw(); cpt++; } } if (cpt == 0) { Console.WriteLine("Aucun Polyline n'est proche du point..."); } Console.WriteLine("\n=============================================="); Console.WriteLine("\nAffichage d'une liste de CartoObj trier par nombre de point\n"); cartoObj.Sort(ocomp); foreach (CartoObj c in cartoObj) { c.Draw(); Console.WriteLine("Nombre de point -------> " + c.NbrPointCarto() + "\n"); } Console.ReadKey(); }