sweetygirls
Messages postés6Date d'inscriptionmercredi 30 avril 2008StatutMembreDernière intervention23 juin 2008
-
16 mai 2008 à 14:36
cs_cheyenne
Messages postés693Date d'inscriptionsamedi 18 mai 2002StatutMembreDernière intervention17 avril 2017
-
18 mai 2008 à 18:13
salut ts le monde je suis entrain de faire une application en vb6 et j'ai besoin de votre aide
je veux bien savoir le code pour marquer un point avec des cordonnés X Y sur une carte geographique
meci pour tte info
Polack77
Messages postés1098Date d'inscriptionmercredi 22 mars 2006StatutMembreDernière intervention22 octobre 20191 16 mai 2008 à 16:54
Je viens de faire un petit truc (par API tu dois pouvoir faire mieux mais je n'es pas le temps)
'8<----------------------------------------------------------------------------
Public Sub AjouteCroix(ByRef Picture As PictureBox, ByVal CentreX As Long, ByVal CentreY As Long, Optional ByVal Taille As Integer = 60)
Picture.DrawMode = vbBlackness
Picture.Line (CentreX - Taille / 2, CentreY - Taille / 2)-(CentreX + Taille / 2, CentreY + Taille / 2)
Picture.Line (CentreX + Taille / 2, CentreY - Taille / 2)-(CentreX - Taille / 2, CentreY + Taille / 2)
End Sub
'---------------------------------------------------------------------------->8
Sa te conviens ?
cs_cheyenne
Messages postés693Date d'inscriptionsamedi 18 mai 2002StatutMembreDernière intervention17 avril 20172 17 mai 2008 à 14:36
Bonjour,
Si x et y sont des coordonnées exprimées en DMS, (50°30'15"N, 10°20'5"W ) le mieux est de travailler avec un PictureBox utilisant ce ScaleMode picCARTE.Scale (-180, 90)-(180, -90).
Tu convertis les degrés minutes et secondes sexagésimales en décimal, sachant que Ouest et Sud sont négatifs, il ne te reste plus qu'à tracer ton
point à ces coordonnées.
Tu extraits d'abord les degrés minutes secondes et l'orientation et tu fais les calculs suivants :
Pour x (longitude)
lon = d + m / 60 + s / 3600 if orientation "W" then lon -lon
idem pour y (latitude)
lat = d + m / 60 + s / 3600 if orientation "S" then lat -lat
Si tu as au départ des données décimales (45.12345678,-15.12345678), il n'y a rien à faire, tu places ton repère directement sur la carte avec le ScaleMode indiqué ci-dessus.
Pour tracer un cercle équivalent à 1° (à toi d'ajuster selon l'échelle de ta carte) : picCARTE.Circle(lon,lat), 1, vbRed
Le ScaleMode indiqué est celui d'une planisphère à toi de faire selon tes besoins. Tu n'as pas donné assez d'explications pour t'aider d'avantage.
Amicalement de Cheyenne.
Vous n’avez pas trouvé la réponse que vous recherchez ?
cs_cheyenne
Messages postés693Date d'inscriptionsamedi 18 mai 2002StatutMembreDernière intervention17 avril 20172 18 mai 2008 à 18:13
Bonjour sweetygirls,
Petites précisions :
Sur un planisphère (et non une comme je l'avais écrit précédement)
1° = 3 pixels (en fait 2.84) sur une carte de 1024 pixels allant de 180°W à 180 E.
1° de longitude à l'équateur représente 111.1 Km
1 pixel éqivaut à 21.7' soit environ 39 Km à l'equateur, donc il n'est pas nécessaire de tenir compte des secondes si tu travailles sur un planisphère.
A noter que si tu travailles avec une API pour dessiner sur ta carte, il te faudra, avant l'appel de celle-ci passer le ScaleMode en vbPixels et convertir les coordonnées en pixels.
Si ma réponse d'hier apporte une solution à ton poblème n'oublies pas de la valider, merci.
Il se peut aussi que cela ne corresponde pas à ce que tu demandes, dans ce cas précises excatement ce dont tu as besoin.