Bonjour à tous, une question pour les forçats du clavier qui ne sont pas en vacances...
J'ai réalisé un petit soft de carto où je dessine une trace GPS sur une image de carte calibrée. J'ai donc en permanence la correspondance entre position du curseur souris et la position géographique en latitude longitude.
Qd le curseur de la souris survole la trace je voudrais afficher dans une info bulle les caractéristiques du point : vitesse, altitude etc...
Pour l'instant j'utilise une procédure un peu bourrin peu performante...
Les points de la trace sont stockés dans un tableau où l'on a la latitude, la longitude, la coordonnée X en pixel sur la carte, la coordonnée Y en pixel sur la carte.
Je pourrai raisonner en terme de latitude et de longitude car je peux facilement calculer la latitude et la longitude correpondant au point survolé par la souris.
Pour l'instant j'ai adopté l'autre voie possible, raisonner sur la position en pixel sur la carte. Qd la souris se déplace je récupère sa position par rapport à la carte ( MouseX et MouseY ) et je teste si c'est une position de point GPS dans mon tableau. Je fais cela à trois pixels près. Ci dessous le bout de code Delphi
Existe il une solution plus élégante et surtout plus rapide ?
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 For i := 1 to Tb_Borne do begin if (MouseX > Tb_VolData[i].MapX - 3 ) and (MouseX < Tb_VolData[i].MapX + 3 )then begin if (MouseY > Tb_VolData[i].MapY - 3 ) and (MouseY < Tb_VolData[i].MapY + 3 )then begin NLabAlti.Visible := True; NLabVitesse.Visible := True; NLabAlti.Value := Tb_VolData[i].Altitude; NLabVitesse.Value := Tb_VolData[i].Vitesse; exit; end; end; end;
Amicalement
Partager