IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C# Discussion :

Placement point sur GMap.Net en WPF


Sujet :

C#

  1. #1
    Membre à l'essai
    Homme Profil pro
    Développeur Web
    Inscrit en
    Novembre 2015
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Novembre 2015
    Messages : 31
    Points : 19
    Points
    19
    Par défaut Placement point sur GMap.Net en WPF
    Bonjour,
    Je suis actuellement en cours de création d'une application WPF, je me pose à un petit soucis.

    J'ai plusieurs fenêtres présentes dans mon WPF, j'ai une carte qui est affiché sur ma fenêtre de base (mainWindow), grâce à une autre fenêtre (window2) je récupère des coordonnées pour le placage de point sur la premiere fenêtre(mainWindow), du coup me voila bloqué, je ne sais pas comment récupéré ma fenêtre de base (mainWindow) à partir de ma deuxième fenêtre(window2).

    Je ne peux évidemment pas instancier une nouvelle fenêtre(mainWindow window = new MainWindow()) sinon je n'ai pas accès à ma carte affiché sur ma fenêtre de base (mainWindow), donc je ne peux pas placer mes points.

    Avez-vous une idée ?

    Cordialement,

    PS : je me vois mal passer la window dans le constructeur étant donné que j'ai une autre fenêtre entre les deux (openWindow).

  2. #2
    Expert confirmé

    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Septembre 2006
    Messages
    3 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Septembre 2006
    Messages : 3 580
    Points : 5 194
    Points
    5 194
    Par défaut
    salut

    sujet déjà débattu plein de fois.

    CElà dit, si une fenetre doit passer des infos à une seconde, ce n'est pas la meilleure approche.

    Il serait plus logique que la fenetre deux mettent à jour des infos via une classe "partagée" par les XX fenetres de ton application.. et quand cette classe est mise à jour,
    elle lève un evenement de mise à jour... et ainsi, les fenetres "abonnées" à cette évenement sauront qu'il faut mettre à jour les données...

    Celà permet une séparation entre les différentes fenetres de saisies / visualisation de données, facilitent l'ajout, amélioration, modification des fenetres, etc...

  3. #3
    Membre du Club
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Septembre 2015
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2015
    Messages : 25
    Points : 51
    Points
    51
    Par défaut
    D'où utiliser le design pattern Observateur : http://design-patterns.fr/observateur

  4. #4
    Membre à l'essai
    Homme Profil pro
    Développeur Web
    Inscrit en
    Novembre 2015
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Novembre 2015
    Messages : 31
    Points : 19
    Points
    19
    Par défaut
    Merci pour votre réponse rapide,

    J'ai réussi à récupérer ma fenêtre de base, cependant un autre soucis ce pose à moi.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    double[] coord = new double[2];
                while (refe[i].adresse != null)
                {
                    //Transformation de l'adresse en lattitude et longitude
                    coord = geo.adresseToGeo(refe[i].adresse, refe[i].ville);
                    //Création du point de l'adresse
                    PointLatLng point = new PointLatLng(coord[0], coord[1]);
                    //Création d'un nouveau marker
                    GMapMarker marker = new GMapMarker(point);
                    //Passage de l'image du marker à notre shape
                    marker.Shape = image;
                    //Déclaration de notre marqueur
                    gmap.Markers.Add(marker);
                    //Passage à l'adresse suivante
                    i++;
                }
    Je suis censé placer un ensemble de point sur ma carte avec ce code, cependant il me place que le dernier point "utiliser", est ce que la fonction marker.add ne permet qu'un seul ajout ? Est ce que j'ai oublié quelque chose ?

    Cordialement,

  5. #5
    Membre du Club
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Septembre 2015
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2015
    Messages : 25
    Points : 51
    Points
    51
    Par défaut
    Pour ta boucle il ne serait pas mieux de faire comme ca ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    for(Int32 i = 0; i<refe.Count; i++)
    {
       // Traitement
    }

  6. #6
    Membre à l'essai
    Homme Profil pro
    Développeur Web
    Inscrit en
    Novembre 2015
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Novembre 2015
    Messages : 31
    Points : 19
    Points
    19
    Par défaut
    Merci pour la réponse,
    Cependant le problème ne vient pas de ma boucle, mes points se place qu'en arrivant à la fin du code.
    J'ai donc qu'un seul point qui se place...

    Cordialement,

  7. #7
    Membre expérimenté
    Avatar de charouel
    Homme Profil pro
    Freelance
    Inscrit en
    Mars 2009
    Messages
    618
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2009
    Messages : 618
    Points : 1 454
    Points
    1 454
    Billets dans le blog
    9
    Par défaut
    il faut déclarer les cordonnées sans la boucle

  8. #8
    Membre à l'essai
    Homme Profil pro
    Développeur Web
    Inscrit en
    Novembre 2015
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Novembre 2015
    Messages : 31
    Points : 19
    Points
    19
    Par défaut
    Ce n'est pas possible ^^ sinon je peux pas ajouter l'ensemble de mes adresses.

  9. #9
    Membre expérimenté
    Avatar de charouel
    Homme Profil pro
    Freelance
    Inscrit en
    Mars 2009
    Messages
    618
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2009
    Messages : 618
    Points : 1 454
    Points
    1 454
    Billets dans le blog
    9
    Par défaut
    A chaque fois que tu tourne ton boucle tu écrase la dernier valeur de coups tu n'auras que la dernière, il faut revoir c'est une question de déclaration => il faut la mettre dans la boucle.

  10. #10
    Membre à l'essai
    Homme Profil pro
    Développeur Web
    Inscrit en
    Novembre 2015
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Novembre 2015
    Messages : 31
    Points : 19
    Points
    19
    Par défaut
    Citation Envoyé par charouel Voir le message
    A chaque fois que tu tourne ton boucle tu écrase la dernier valeur de coups tu n'auras que la dernière, il faut revoir c'est une question de déclaration => il faut la mettre dans la boucle.
    Elle n'est pas écrasé, quand je fais pas à pas, mes valeurs lat et long sont bien ajoutés (voir screen)

    Nom : screenadresse.png
Affichages : 782
Taille : 25,6 Ko

  11. #11
    Membre expérimenté
    Avatar de charouel
    Homme Profil pro
    Freelance
    Inscrit en
    Mars 2009
    Messages
    618
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2009
    Messages : 618
    Points : 1 454
    Points
    1 454
    Billets dans le blog
    9
    Par défaut
    Oui mais ils ont les même valeurs de coups tu vois une seul point après. Peux tu vérifier le contenu de chaque point ??

  12. #12
    Membre à l'essai
    Homme Profil pro
    Développeur Web
    Inscrit en
    Novembre 2015
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Novembre 2015
    Messages : 31
    Points : 19
    Points
    19
    Par défaut
    Citation Envoyé par charouel Voir le message
    Oui mais ils ont les même valeurs de coups tu vois une seul point après. Peux tu vérifier le contenu de chaque point ??
    Oui c'est déjà fait quand je dis qu'elle ne s'écrase pas c'est que j'ai vérifié la présence de tout mes points dans mes markers et de leurs valeurs

    Les longitudes et latitudes ne sont pas les mêmes dans mon "tableau" de marker.

  13. #13
    Modérateur
    Avatar de DotNetMatt
    Homme Profil pro
    CTO
    Inscrit en
    Février 2010
    Messages
    3 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : CTO
    Secteur : Finance

    Informations forums :
    Inscription : Février 2010
    Messages : 3 611
    Points : 9 742
    Points
    9 742
    Billets dans le blog
    3
    Par défaut
    C'est bizarre ton while, comme on te l'a déjà dit, tu devrais utiliser une boucle for ou foreach, mais bon c'est toi qui voit !

    Voici un code qui marche :
    Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    gmap.MapProvider = GMap.NET.MapProviders.BingMapProvider.Instance;
    GMap.NET.GMaps.Instance.Mode = GMap.NET.AccessMode.ServerOnly;
    gmap.SetPositionByKeywords("Paris, France");
     
    GMapOverlay markersOverlay = new GMapOverlay("markers");
     
    var lat = 48.8567;
     
    // On crée 10 markers
    for (var i = 0; i < 10; i++)
    {
    	GMarkerGoogle marker = new GMarkerGoogle(new PointLatLng(lat, 2.3508), GMarkerGoogleType.green);
     
    	markersOverlay.Markers.Add(marker);
     
    	// On incrémente la latitude juste pour être sûr d'avoir des points distinctement visibles
    	lat++;
    }
     
    gmap.Overlays.Add(markersOverlay);
    Résultat :
    Nom : 2016-02-02_11-52-24.jpg
Affichages : 769
Taille : 197,8 Ko

  14. #14
    Membre à l'essai
    Homme Profil pro
    Développeur Web
    Inscrit en
    Novembre 2015
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Novembre 2015
    Messages : 31
    Points : 19
    Points
    19
    Par défaut
    Bonjour,
    Merci pour votre réponse, j'ai modifié ma boucle

    Sinon votre code et certes bon mais pour du WINFORM et non du WPF. (GMapoverlay n'existe pas dans la dll WPF).

    Cordialement,

  15. #15
    Modérateur
    Avatar de DotNetMatt
    Homme Profil pro
    CTO
    Inscrit en
    Février 2010
    Messages
    3 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : CTO
    Secteur : Finance

    Informations forums :
    Inscription : Février 2010
    Messages : 3 611
    Points : 9 742
    Points
    9 742
    Billets dans le blog
    3
    Par défaut
    Citation Envoyé par nicoptv Voir le message
    Bonjour,
    Merci pour votre réponse, j'ai modifié ma boucle

    Sinon votre code et certes bon mais pour du WINFORM et non du WPF. (GMapoverlay n'existe pas dans la dll WPF).
    Arf en effet je n'avais pas fait attention à ca J'essaie de voir ca quand j'ai quelques minutes. Si quelqu'un d'autre passe entre temps n'hésitez pas !

    [EDIT]
    Ok donc presque le même code mais pour WPF :
    Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    this.MainMap.MapProvider = GMapProviders.BingMap;
    this.MainMap.Manager.Mode = AccessMode.ServerOnly;
    MainMap.SetPositionByKeywords("Paris, France");
     
    var lat = 48.8567;
     
    // On crée 10 markers
    for (var i = 0; i < 10; i++)
    {
    	var point = new PointLatLng(lat, 2.3508);
     
    	GMapMarker marker = new GMapMarker(point);
     
    	marker.Shape = new CustomMarkerDemo(this, marker, string.Empty);
    	marker.ZIndex = 55;
    	this.MainMap.Markers.Add(marker);
     
    	// On incrémente la latitude juste pour être sûr d'avoir des points distinctement visibles
    	lat++;
    }
    La seule différence ici je pense c'est que j'ai mis le ZIndex à 55... As-tu essayé de changer la valeur de cette propriété ?

  16. #16
    Membre à l'essai
    Homme Profil pro
    Développeur Web
    Inscrit en
    Novembre 2015
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Novembre 2015
    Messages : 31
    Points : 19
    Points
    19
    Par défaut
    Citation Envoyé par DotNetMatt Voir le message
    Arf en effet je n'avais pas fait attention à ca J'essaie de voir ca quand j'ai quelques minutes. Si quelqu'un d'autre passe entre temps n'hésitez pas !

    [EDIT]
    Ok donc presque le même code mais pour WPF :
    Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    this.MainMap.MapProvider = GMapProviders.BingMap;
    this.MainMap.Manager.Mode = AccessMode.ServerOnly;
    MainMap.SetPositionByKeywords("Paris, France");
     
    var lat = 48.8567;
     
    // On crée 10 markers
    for (var i = 0; i < 10; i++)
    {
    	var point = new PointLatLng(lat, 2.3508);
     
    	GMapMarker marker = new GMapMarker(point);
     
    	marker.Shape = new CustomMarkerDemo(this, marker, string.Empty);
    	marker.ZIndex = 55;
    	this.MainMap.Markers.Add(marker);
     
    	// On incrémente la latitude juste pour être sûr d'avoir des points distinctement visibles
    	lat++;
    }
    La seule différence ici je pense c'est que j'ai mis le ZIndex à 55... As-tu essayé de changer la valeur de cette propriété ?

    Pour commencer, j'ai bien un ZIndex de passé, j'ai essayé ZIndex = 10 mais aussi un Zindex = 10 + i; (pour voir si l’incrémentation du point allez changer), mais rien n'y fait toujours un seul point.
    Ensuite j'ai testé ton code et il ne m'affiche même pas un seul point ^^ est ce que ton code marche ? il t'affiche bien 11 points ?

    Cordialement,

  17. #17
    Modérateur
    Avatar de DotNetMatt
    Homme Profil pro
    CTO
    Inscrit en
    Février 2010
    Messages
    3 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : CTO
    Secteur : Finance

    Informations forums :
    Inscription : Février 2010
    Messages : 3 611
    Points : 9 742
    Points
    9 742
    Billets dans le blog
    3
    Par défaut
    Citation Envoyé par nicoptv Voir le message
    est ce que ton code marche ? il t'affiche bien 11 points ?
    Ah bizarre, oui ca m'affiche bien mes 10 points :
    Nom : 2016-02-02_16-48-20.png
Affichages : 984
Taille : 341,3 Ko

    Alors peut-être que c'est parce que tu utilises tout le temps la même Shape ? Au lieu de faire marker.Shape = image; essaie d'instancier une nouvelle image pour chaque point, un peu comme ceci : marker.Shape = new CustomMarkerDemo(this, marker, string.Empty);.

    Ca donne quoi ?

  18. #18
    Membre à l'essai
    Homme Profil pro
    Développeur Web
    Inscrit en
    Novembre 2015
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Novembre 2015
    Messages : 31
    Points : 19
    Points
    19
    Par défaut
    Citation Envoyé par DotNetMatt Voir le message
    Ah bizarre, oui ca m'affiche bien mes 10 points :
    Nom : 2016-02-02_16-48-20.png
Affichages : 984
Taille : 341,3 Ko

    Alors peut-être que c'est parce que tu utilises tout le temps la même Shape ? Au lieu de faire marker.Shape = image; essaie d'instancier une nouvelle image pour chaque point, un peu comme ceci : marker.Shape = new CustomMarkerDemo(this, marker, string.Empty);.

    Ca donne quoi ?

    J'ai ré instancié mon image à chaque fois et ALLELUIA !!! ça marche !!!

    Enfin après 1 semaine d'essai... je n'en pouvais plus, merci tu me sauves.... juste pour ça c'est horrible quand meme.

  19. #19
    Modérateur
    Avatar de DotNetMatt
    Homme Profil pro
    CTO
    Inscrit en
    Février 2010
    Messages
    3 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : CTO
    Secteur : Finance

    Informations forums :
    Inscription : Février 2010
    Messages : 3 611
    Points : 9 742
    Points
    9 742
    Billets dans le blog
    3
    Par défaut
    J'ai l'impression que l'auteur a baclé la librairie pour WPF et que celle pour WinForms est plus aboutie... Ou alors il y a des notions de WPF qui m'échappent (je fais plus de Web que de Desktop). Bref tant que ca marche c'est cool
    Tu peux aussi regarder le code source des exemples, ca peut être utile : http://greatmaps.codeplex.com/Source...w/0ab09a67a5fa (dossier Demo.WindowsPresentation).

    N'oublie pas de marquer la discussion comme résolue en utilisant le bouton "Résolu" en bas de cette page.

  20. #20
    Membre à l'essai
    Homme Profil pro
    Développeur Web
    Inscrit en
    Novembre 2015
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Novembre 2015
    Messages : 31
    Points : 19
    Points
    19
    Par défaut
    Citation Envoyé par DotNetMatt Voir le message
    J'ai l'impression que l'auteur a baclé la librairie pour WPF et que celle pour WinForms est plus aboutie... Ou alors il y a des notions de WPF qui m'échappent (je fais plus de Web que de Desktop). Bref tant que ca marche c'est cool
    Tu peux aussi regarder le code source des exemples, ca peut être utile : http://greatmaps.codeplex.com/Source...w/0ab09a67a5fa (dossier Demo.WindowsPresentation).

    N'oublie pas de marquer la discussion comme résolue en utilisant le bouton "Résolu" en bas de cette page.

    Oui j'ai déjà feuilleté les codes sources en WPF
    Sinon on vois bien que la partie WinForm est beaucoup plus complète que celle du WPF, je trouve ça bien dommage... mais bon

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. [Windows]accès base de registre windows
    Par Greg01 dans le forum API standards et tierces
    Réponses: 27
    Dernier message: 05/06/2007, 15h14
  2. Accès au ports
    Par YéTeeh dans le forum C++Builder
    Réponses: 6
    Dernier message: 29/07/2002, 14h54
  3. Exécution indivisible (accès conccurent)
    Par Bouziane Abderraouf dans le forum CORBA
    Réponses: 3
    Dernier message: 23/07/2002, 08h09
  4. Multi-acces a la BD Paradox
    Par _Rico_ dans le forum Paradox
    Réponses: 3
    Dernier message: 22/07/2002, 15h33
  5. Accès à une application ouverte (OLE Automation ?)
    Par PascalB dans le forum C++Builder
    Réponses: 6
    Dernier message: 17/06/2002, 14h39

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo