Bonjour,
Je sais que certains d'entre vous utilisent MapPoint 2004 dans leur
application. Après avoir longuement cherché, j'ai (enfin) trouvé un bout
code qui permettrait de recevoir la latitude et la longitude en fonction
d'un point sélectionné sur la carte. Cela ouvre bien évidemment des
perspectives pour la gestion des tournées etc etc...
Il me reste cependant un petit problème et je fais appel donc à vous.
L'idée est donc d'avoir DANS une fenêtre Windev, une carte et des toolbars
de Mappoint. Ensuite, lorsque l'on a trouvé le point pour lequel on veut
connaître la Longitude et la Latitude, on fait Shift+Clic. Cela déclenche
alors la procédure de calcul. Seulement voilà, autant la Latitude est
correcte, autant la longitude ne l'est pas. Si quelqu'un a des
de géo, il pourra peut-être trouver la solution.
Pour parvenir à faire les tests, il suffit de créer une fenêtre avec champ
active X (ObjMap) dedans. Ensuite, donner à cette Fenêtre la propriété
maximisée à l'ouverture et ajouter un barre de message
L'active X se nomme ObjMap dans l'exemple.
Voici le code que j'utilise
// Initialisation de ObjMap
ObjMap>>NewMap(2)
ObjMap>>Units=1
ObjMap>>Appearance(1)
ActiveXEvénement("bibi",ObjMap,"BeforeClick")
// Initialisation de la fenêtre
//Faire apparaître les barres d'outils
OBJDYN est un objet OLE dynamique
MultitâcheRepeint()
OBJDYN=ObjMap>>Toolbars>>ITEM(1)
OBJDYN>>Visible=OLETrue
MultitâcheRepeint()
OBJDYN=ObjMap>>Toolbars>>ITEM(2)
OBJDYN>>Visible=OLETrue
MultitâcheRepeint()
libérer OBJDYN
//Fermeture de la fenêtre
ObjMap>>ActiveMap>>Saved = OLETrue
ObjMap>>CloseMap
//Procédure globale de la fenêtre qui sera appelée lorsque l'on clique sur
la carte de l'Active X
PROCEDURE OnClick()
Mylat,mylon are currency
IF ToucheEnfoncée(teShift) THEN
Message(ObjMap>>activemap>>Pixelsize)
XX is currency
YY is currency
Res est un entier = CurseurPos ( cpClient )
SI Res <> -1 ALORS
XX=PoidsFaible(Res)-ObjMap..X
YY=PoidsFort(Res)-ObjMap..Y
FIN
Message(XX+"-"+YY)
YY-S
XX-=2
Omap est un objet OLE dynamique
Omap = ObjMap>>ActiveMap
OLoc est un objet OLE dynamique
OLoc = Omap>>XYToLocation(XX, YY)
ObjMap>>ActiveMap>>AddPushpin(OLoc,"Warehouse")
CalcPos(Omap, OLoc, Mylat, mylon)
Message("Lat : "+Mylat+" Lon : "+mylon)
END
//Procédure qui détermine la Latitude et la Longitude à partir du point
cliqué
PROCEDURE CalcPos(OBJMM,locX,DblLat,DblLon)
locNorthPole est un objet OLE dynamique
locSantaCruz est un objet OLE dynamique
dblHalfEarth is currency
dblQuarterEarth is currency
l is currency
d is currency
locNorthPole=OBJMM>>GetLocation(90, 0)
locSantaCruz=OBJMM>>GetLocation(0, -90)
dblHalfEarth=OBJMM>>Distance(locNorthPole,OBJMM>>GetLocation(-90, 0))
//Quarter of that is the max distance a point may be away from
and still be in western hemisphere
dblQuarterEarth = dblHalfEarth / 2
// Compute latitude from distance to north pole
DblLat = 90 - 180 * OBJMM>>Distance(locNorthPole, locX) / dblHalfEarth
// Compute great circle distance to locX from point on Greenwich meridian
and computed Latitude
d = OBJMM>>Distance(OBJMM>>GetLocation(DblLat, 0), locX)
//convert latitude to radian
l = (DblLat / 180) * ValPI
//Compute Longitude from great circle distance
blub is real sur 8
DblLon = 180 * ArcCos((Cos((d * 2 * ValPI) / (2 * dblHalfEarth)) - Sin(l)
Sin(l)) / (Cos(l) * Cos(l))) / ValPI
IF OBJMM>>Distance(locSantaCruz, locX) < dblQuarterEarth THEN DblLon
= -DblLon
RETURN
Cette fonction est basée sur du code VB que j'ai trouvé ici... Je ne vois
cependant pas où j'ai commis une faute.
Pour ceux que cela intéresse, tout cela est dans une fenêtre (V9) et il
a qu'à demander. Il faut bien évidemment Mappoint installé sur la machine
pour le fonctionnement. CQFD
Merci d'avance,
Benoît Nève
Bonjour,
Je sais que certains d'entre vous utilisent MapPoint 2004 dans leur
application. Après avoir longuement cherché, j'ai (enfin) trouvé un bout
code qui permettrait de recevoir la latitude et la longitude en fonction
d'un point sélectionné sur la carte. Cela ouvre bien évidemment des
perspectives pour la gestion des tournées etc etc...
Il me reste cependant un petit problème et je fais appel donc à vous.
L'idée est donc d'avoir DANS une fenêtre Windev, une carte et des toolbars
de Mappoint. Ensuite, lorsque l'on a trouvé le point pour lequel on veut
connaître la Longitude et la Latitude, on fait Shift+Clic. Cela déclenche
alors la procédure de calcul. Seulement voilà, autant la Latitude est
correcte, autant la longitude ne l'est pas. Si quelqu'un a des
de géo, il pourra peut-être trouver la solution.
Pour parvenir à faire les tests, il suffit de créer une fenêtre avec champ
active X (ObjMap) dedans. Ensuite, donner à cette Fenêtre la propriété
maximisée à l'ouverture et ajouter un barre de message
L'active X se nomme ObjMap dans l'exemple.
Voici le code que j'utilise
// Initialisation de ObjMap
ObjMap>>NewMap(2)
ObjMap>>Units=1
ObjMap>>Appearance(1)
ActiveXEvénement("bibi",ObjMap,"BeforeClick")
// Initialisation de la fenêtre
//Faire apparaître les barres d'outils
OBJDYN est un objet OLE dynamique
MultitâcheRepeint()
OBJDYN=ObjMap>>Toolbars>>ITEM(1)
OBJDYN>>Visible=OLETrue
MultitâcheRepeint()
OBJDYN=ObjMap>>Toolbars>>ITEM(2)
OBJDYN>>Visible=OLETrue
MultitâcheRepeint()
libérer OBJDYN
//Fermeture de la fenêtre
ObjMap>>ActiveMap>>Saved = OLETrue
ObjMap>>CloseMap
//Procédure globale de la fenêtre qui sera appelée lorsque l'on clique sur
la carte de l'Active X
PROCEDURE OnClick()
Mylat,mylon are currency
IF ToucheEnfoncée(teShift) THEN
Message(ObjMap>>activemap>>Pixelsize)
XX is currency
YY is currency
Res est un entier = CurseurPos ( cpClient )
SI Res <> -1 ALORS
XX=PoidsFaible(Res)-ObjMap..X
YY=PoidsFort(Res)-ObjMap..Y
FIN
Message(XX+"-"+YY)
YY-S
XX-=2
Omap est un objet OLE dynamique
Omap = ObjMap>>ActiveMap
OLoc est un objet OLE dynamique
OLoc = Omap>>XYToLocation(XX, YY)
ObjMap>>ActiveMap>>AddPushpin(OLoc,"Warehouse")
CalcPos(Omap, OLoc, Mylat, mylon)
Message("Lat : "+Mylat+" Lon : "+mylon)
END
//Procédure qui détermine la Latitude et la Longitude à partir du point
cliqué
PROCEDURE CalcPos(OBJMM,locX,DblLat,DblLon)
locNorthPole est un objet OLE dynamique
locSantaCruz est un objet OLE dynamique
dblHalfEarth is currency
dblQuarterEarth is currency
l is currency
d is currency
locNorthPole=OBJMM>>GetLocation(90, 0)
locSantaCruz=OBJMM>>GetLocation(0, -90)
dblHalfEarth=OBJMM>>Distance(locNorthPole,OBJMM>>GetLocation(-90, 0))
//Quarter of that is the max distance a point may be away from
and still be in western hemisphere
dblQuarterEarth = dblHalfEarth / 2
// Compute latitude from distance to north pole
DblLat = 90 - 180 * OBJMM>>Distance(locNorthPole, locX) / dblHalfEarth
// Compute great circle distance to locX from point on Greenwich meridian
and computed Latitude
d = OBJMM>>Distance(OBJMM>>GetLocation(DblLat, 0), locX)
//convert latitude to radian
l = (DblLat / 180) * ValPI
//Compute Longitude from great circle distance
blub is real sur 8
DblLon = 180 * ArcCos((Cos((d * 2 * ValPI) / (2 * dblHalfEarth)) - Sin(l)
Sin(l)) / (Cos(l) * Cos(l))) / ValPI
IF OBJMM>>Distance(locSantaCruz, locX) < dblQuarterEarth THEN DblLon
= -DblLon
RETURN
Cette fonction est basée sur du code VB que j'ai trouvé ici... Je ne vois
cependant pas où j'ai commis une faute.
Pour ceux que cela intéresse, tout cela est dans une fenêtre (V9) et il
a qu'à demander. Il faut bien évidemment Mappoint installé sur la machine
pour le fonctionnement. CQFD
Merci d'avance,
Benoît Nève
Bonjour,
Je sais que certains d'entre vous utilisent MapPoint 2004 dans leur
application. Après avoir longuement cherché, j'ai (enfin) trouvé un bout
code qui permettrait de recevoir la latitude et la longitude en fonction
d'un point sélectionné sur la carte. Cela ouvre bien évidemment des
perspectives pour la gestion des tournées etc etc...
Il me reste cependant un petit problème et je fais appel donc à vous.
L'idée est donc d'avoir DANS une fenêtre Windev, une carte et des toolbars
de Mappoint. Ensuite, lorsque l'on a trouvé le point pour lequel on veut
connaître la Longitude et la Latitude, on fait Shift+Clic. Cela déclenche
alors la procédure de calcul. Seulement voilà, autant la Latitude est
correcte, autant la longitude ne l'est pas. Si quelqu'un a des
de géo, il pourra peut-être trouver la solution.
Pour parvenir à faire les tests, il suffit de créer une fenêtre avec champ
active X (ObjMap) dedans. Ensuite, donner à cette Fenêtre la propriété
maximisée à l'ouverture et ajouter un barre de message
L'active X se nomme ObjMap dans l'exemple.
Voici le code que j'utilise
// Initialisation de ObjMap
ObjMap>>NewMap(2)
ObjMap>>Units=1
ObjMap>>Appearance(1)
ActiveXEvénement("bibi",ObjMap,"BeforeClick")
// Initialisation de la fenêtre
//Faire apparaître les barres d'outils
OBJDYN est un objet OLE dynamique
MultitâcheRepeint()
OBJDYN=ObjMap>>Toolbars>>ITEM(1)
OBJDYN>>Visible=OLETrue
MultitâcheRepeint()
OBJDYN=ObjMap>>Toolbars>>ITEM(2)
OBJDYN>>Visible=OLETrue
MultitâcheRepeint()
libérer OBJDYN
//Fermeture de la fenêtre
ObjMap>>ActiveMap>>Saved = OLETrue
ObjMap>>CloseMap
//Procédure globale de la fenêtre qui sera appelée lorsque l'on clique sur
la carte de l'Active X
PROCEDURE OnClick()
Mylat,mylon are currency
IF ToucheEnfoncée(teShift) THEN
Message(ObjMap>>activemap>>Pixelsize)
XX is currency
YY is currency
Res est un entier = CurseurPos ( cpClient )
SI Res <> -1 ALORS
XX=PoidsFaible(Res)-ObjMap..X
YY=PoidsFort(Res)-ObjMap..Y
FIN
Message(XX+"-"+YY)
YY-S
XX-=2
Omap est un objet OLE dynamique
Omap = ObjMap>>ActiveMap
OLoc est un objet OLE dynamique
OLoc = Omap>>XYToLocation(XX, YY)
ObjMap>>ActiveMap>>AddPushpin(OLoc,"Warehouse")
CalcPos(Omap, OLoc, Mylat, mylon)
Message("Lat : "+Mylat+" Lon : "+mylon)
END
//Procédure qui détermine la Latitude et la Longitude à partir du point
cliqué
PROCEDURE CalcPos(OBJMM,locX,DblLat,DblLon)
locNorthPole est un objet OLE dynamique
locSantaCruz est un objet OLE dynamique
dblHalfEarth is currency
dblQuarterEarth is currency
l is currency
d is currency
locNorthPole=OBJMM>>GetLocation(90, 0)
locSantaCruz=OBJMM>>GetLocation(0, -90)
dblHalfEarth=OBJMM>>Distance(locNorthPole,OBJMM>>GetLocation(-90, 0))
//Quarter of that is the max distance a point may be away from
and still be in western hemisphere
dblQuarterEarth = dblHalfEarth / 2
// Compute latitude from distance to north pole
DblLat = 90 - 180 * OBJMM>>Distance(locNorthPole, locX) / dblHalfEarth
// Compute great circle distance to locX from point on Greenwich meridian
and computed Latitude
d = OBJMM>>Distance(OBJMM>>GetLocation(DblLat, 0), locX)
//convert latitude to radian
l = (DblLat / 180) * ValPI
//Compute Longitude from great circle distance
blub is real sur 8
DblLon = 180 * ArcCos((Cos((d * 2 * ValPI) / (2 * dblHalfEarth)) - Sin(l)
Sin(l)) / (Cos(l) * Cos(l))) / ValPI
IF OBJMM>>Distance(locSantaCruz, locX) < dblQuarterEarth THEN DblLon
= -DblLon
RETURN
Cette fonction est basée sur du code VB que j'ai trouvé ici... Je ne vois
cependant pas où j'ai commis une faute.
Pour ceux que cela intéresse, tout cela est dans une fenêtre (V9) et il
a qu'à demander. Il faut bien évidemment Mappoint installé sur la machine
pour le fonctionnement. CQFD
Merci d'avance,
Benoît Nève
Bonjour,
il me semble que VB et Windev ne fonctionnent pas de la même manière.
J'avais ,pour cette raison, me semble-t'il me souvenir, contourné de la
manière suivante dans MapPoint2002 :
dblLon = :F_Arccos((:F_CosVB((vl_r_d * 2 * ValPI) / (2 *
vl_r_dblHalfEarth)) - :F_SinVB(vl_r_l) * :F_SinVB(vl_r_l)) /
(:F_CosVB(vl_r_l) * :F_CosVB(vl_r_l)))
PROCEDURE F_CosVB(x)
RENVOYER Cosinus(180*x / ValPI)
PROCEDURE F_SinVB(x)
RENVOYER Sinus( 180 * x / ValPI )
PROCEDURE F_Arccos(x est un réel)
RENVOYER ArcTang(-x / Racine(-x * x + 1)) + (2 * ArcTang(1))
--
Cordialement
Christophe Charron
Service Développement
PROLOGIQ
7 bis Rue des Aulnes
69410 Champagne au Mont d'Or
Tel : 0 437 499 107
Fax : 0 437 499 105
mailto:
"B. Neve" a écrit dans le message de
news:42e50d4e$0$1985$Bonjour,
Je sais que certains d'entre vous utilisent MapPoint 2004 dans leur
application. Après avoir longuement cherché, j'ai (enfin) trouvé un bout
decode qui permettrait de recevoir la latitude et la longitude en fonction
d'un point sélectionné sur la carte. Cela ouvre bien évidemment des
grandesperspectives pour la gestion des tournées etc etc...
Il me reste cependant un petit problème et je fais appel donc à vous.
L'idée est donc d'avoir DANS une fenêtre Windev, une carte et des
toolbars
de Mappoint. Ensuite, lorsque l'on a trouvé le point pour lequel on veut
connaître la Longitude et la Latitude, on fait Shift+Clic. Cela déclenche
alors la procédure de calcul. Seulement voilà, autant la Latitude est
correcte, autant la longitude ne l'est pas. Si quelqu'un a des
connaissancesde géo, il pourra peut-être trouver la solution.
Pour parvenir à faire les tests, il suffit de créer une fenêtre avec
champ
active X (ObjMap) dedans. Ensuite, donner à cette Fenêtre la propriété
maximisée à l'ouverture et ajouter un barre de message
L'active X se nomme ObjMap dans l'exemple.
Voici le code que j'utilise
// Initialisation de ObjMap
ObjMap>>NewMap(2)
ObjMap>>Units=1
ObjMap>>Appearance(1)
ActiveXEvénement("bibi",ObjMap,"BeforeClick")
// Initialisation de la fenêtre
//Faire apparaître les barres d'outils
OBJDYN est un objet OLE dynamique
MultitâcheRepeint()
OBJDYN=ObjMap>>Toolbars>>ITEM(1)
OBJDYN>>Visible=OLETrue
MultitâcheRepeint()
OBJDYN=ObjMap>>Toolbars>>ITEM(2)
OBJDYN>>Visible=OLETrue
MultitâcheRepeint()
libérer OBJDYN
//Fermeture de la fenêtre
ObjMap>>ActiveMap>>Saved = OLETrue
ObjMap>>CloseMap
//Procédure globale de la fenêtre qui sera appelée lorsque l'on clique
sur
la carte de l'Active X
PROCEDURE OnClick()
Mylat,mylon are currency
IF ToucheEnfoncée(teShift) THEN
Message(ObjMap>>activemap>>Pixelsize)
XX is currency
YY is currency
Res est un entier = CurseurPos ( cpClient )
SI Res <> -1 ALORS
XX=PoidsFaible(Res)-ObjMap..X
YY=PoidsFort(Res)-ObjMap..Y
FIN
Message(XX+"-"+YY)
YY-S
XX-=2
Omap est un objet OLE dynamique
Omap = ObjMap>>ActiveMap
OLoc est un objet OLE dynamique
OLoc = Omap>>XYToLocation(XX, YY)
ObjMap>>ActiveMap>>AddPushpin(OLoc,"Warehouse")
CalcPos(Omap, OLoc, Mylat, mylon)
Message("Lat : "+Mylat+" Lon : "+mylon)
END
//Procédure qui détermine la Latitude et la Longitude à partir du point
cliqué
PROCEDURE CalcPos(OBJMM,locX,DblLat,DblLon)
locNorthPole est un objet OLE dynamique
locSantaCruz est un objet OLE dynamique
dblHalfEarth is currency
dblQuarterEarth is currency
l is currency
d is currency
locNorthPole=OBJMM>>GetLocation(90, 0)
locSantaCruz=OBJMM>>GetLocation(0, -90)
dblHalfEarth=OBJMM>>Distance(locNorthPole,OBJMM>>GetLocation(-90, 0))
//Quarter of that is the max distance a point may be away from
locSantaCruzand still be in western hemisphere
dblQuarterEarth = dblHalfEarth / 2
// Compute latitude from distance to north pole
DblLat = 90 - 180 * OBJMM>>Distance(locNorthPole, locX) / dblHalfEarth
// Compute great circle distance to locX from point on Greenwich meridian
and computed Latitude
d = OBJMM>>Distance(OBJMM>>GetLocation(DblLat, 0), locX)
//convert latitude to radian
l = (DblLat / 180) * ValPI
//Compute Longitude from great circle distance
blub is real sur 8
DblLon = 180 * ArcCos((Cos((d * 2 * ValPI) / (2 * dblHalfEarth)) - Sin(l)
*Sin(l)) / (Cos(l) * Cos(l))) / ValPI
IF OBJMM>>Distance(locSantaCruz, locX) < dblQuarterEarth THEN DblLon
= -DblLon
RETURN
Cette fonction est basée sur du code VB que j'ai trouvé ici... Je ne vois
cependant pas où j'ai commis une faute.
Pour ceux que cela intéresse, tout cela est dans une fenêtre (V9) et il
n'ya qu'à demander. Il faut bien évidemment Mappoint installé sur la machine
pour le fonctionnement. CQFD
Merci d'avance,
Benoît Nève
Bonjour,
il me semble que VB et Windev ne fonctionnent pas de la même manière.
J'avais ,pour cette raison, me semble-t'il me souvenir, contourné de la
manière suivante dans MapPoint2002 :
dblLon = :F_Arccos((:F_CosVB((vl_r_d * 2 * ValPI) / (2 *
vl_r_dblHalfEarth)) - :F_SinVB(vl_r_l) * :F_SinVB(vl_r_l)) /
(:F_CosVB(vl_r_l) * :F_CosVB(vl_r_l)))
PROCEDURE F_CosVB(x)
RENVOYER Cosinus(180*x / ValPI)
PROCEDURE F_SinVB(x)
RENVOYER Sinus( 180 * x / ValPI )
PROCEDURE F_Arccos(x est un réel)
RENVOYER ArcTang(-x / Racine(-x * x + 1)) + (2 * ArcTang(1))
--
Cordialement
Christophe Charron
Service Développement
PROLOGIQ
7 bis Rue des Aulnes
69410 Champagne au Mont d'Or
Tel : 0 437 499 107
Fax : 0 437 499 105
mailto:developpement@prologiq.fr
"B. Neve" <_nospam_bne@dagico.com> a écrit dans le message de
news:42e50d4e$0$1985$ba620e4c@news.skynet.be...
Bonjour,
Je sais que certains d'entre vous utilisent MapPoint 2004 dans leur
application. Après avoir longuement cherché, j'ai (enfin) trouvé un bout
de
code qui permettrait de recevoir la latitude et la longitude en fonction
d'un point sélectionné sur la carte. Cela ouvre bien évidemment des
grandes
perspectives pour la gestion des tournées etc etc...
Il me reste cependant un petit problème et je fais appel donc à vous.
L'idée est donc d'avoir DANS une fenêtre Windev, une carte et des
toolbars
de Mappoint. Ensuite, lorsque l'on a trouvé le point pour lequel on veut
connaître la Longitude et la Latitude, on fait Shift+Clic. Cela déclenche
alors la procédure de calcul. Seulement voilà, autant la Latitude est
correcte, autant la longitude ne l'est pas. Si quelqu'un a des
connaissances
de géo, il pourra peut-être trouver la solution.
Pour parvenir à faire les tests, il suffit de créer une fenêtre avec
champ
active X (ObjMap) dedans. Ensuite, donner à cette Fenêtre la propriété
maximisée à l'ouverture et ajouter un barre de message
L'active X se nomme ObjMap dans l'exemple.
Voici le code que j'utilise
// Initialisation de ObjMap
ObjMap>>NewMap(2)
ObjMap>>Units=1
ObjMap>>Appearance(1)
ActiveXEvénement("bibi",ObjMap,"BeforeClick")
// Initialisation de la fenêtre
//Faire apparaître les barres d'outils
OBJDYN est un objet OLE dynamique
MultitâcheRepeint()
OBJDYN=ObjMap>>Toolbars>>ITEM(1)
OBJDYN>>Visible=OLETrue
MultitâcheRepeint()
OBJDYN=ObjMap>>Toolbars>>ITEM(2)
OBJDYN>>Visible=OLETrue
MultitâcheRepeint()
libérer OBJDYN
//Fermeture de la fenêtre
ObjMap>>ActiveMap>>Saved = OLETrue
ObjMap>>CloseMap
//Procédure globale de la fenêtre qui sera appelée lorsque l'on clique
sur
la carte de l'Active X
PROCEDURE OnClick()
Mylat,mylon are currency
IF ToucheEnfoncée(teShift) THEN
Message(ObjMap>>activemap>>Pixelsize)
XX is currency
YY is currency
Res est un entier = CurseurPos ( cpClient )
SI Res <> -1 ALORS
XX=PoidsFaible(Res)-ObjMap..X
YY=PoidsFort(Res)-ObjMap..Y
FIN
Message(XX+"-"+YY)
YY-S
XX-=2
Omap est un objet OLE dynamique
Omap = ObjMap>>ActiveMap
OLoc est un objet OLE dynamique
OLoc = Omap>>XYToLocation(XX, YY)
ObjMap>>ActiveMap>>AddPushpin(OLoc,"Warehouse")
CalcPos(Omap, OLoc, Mylat, mylon)
Message("Lat : "+Mylat+" Lon : "+mylon)
END
//Procédure qui détermine la Latitude et la Longitude à partir du point
cliqué
PROCEDURE CalcPos(OBJMM,locX,DblLat,DblLon)
locNorthPole est un objet OLE dynamique
locSantaCruz est un objet OLE dynamique
dblHalfEarth is currency
dblQuarterEarth is currency
l is currency
d is currency
locNorthPole=OBJMM>>GetLocation(90, 0)
locSantaCruz=OBJMM>>GetLocation(0, -90)
dblHalfEarth=OBJMM>>Distance(locNorthPole,OBJMM>>GetLocation(-90, 0))
//Quarter of that is the max distance a point may be away from
locSantaCruz
and still be in western hemisphere
dblQuarterEarth = dblHalfEarth / 2
// Compute latitude from distance to north pole
DblLat = 90 - 180 * OBJMM>>Distance(locNorthPole, locX) / dblHalfEarth
// Compute great circle distance to locX from point on Greenwich meridian
and computed Latitude
d = OBJMM>>Distance(OBJMM>>GetLocation(DblLat, 0), locX)
//convert latitude to radian
l = (DblLat / 180) * ValPI
//Compute Longitude from great circle distance
blub is real sur 8
DblLon = 180 * ArcCos((Cos((d * 2 * ValPI) / (2 * dblHalfEarth)) - Sin(l)
*
Sin(l)) / (Cos(l) * Cos(l))) / ValPI
IF OBJMM>>Distance(locSantaCruz, locX) < dblQuarterEarth THEN DblLon
= -DblLon
RETURN
Cette fonction est basée sur du code VB que j'ai trouvé ici... Je ne vois
cependant pas où j'ai commis une faute.
Pour ceux que cela intéresse, tout cela est dans une fenêtre (V9) et il
n'y
a qu'à demander. Il faut bien évidemment Mappoint installé sur la machine
pour le fonctionnement. CQFD
Merci d'avance,
Benoît Nève
Bonjour,
il me semble que VB et Windev ne fonctionnent pas de la même manière.
J'avais ,pour cette raison, me semble-t'il me souvenir, contourné de la
manière suivante dans MapPoint2002 :
dblLon = :F_Arccos((:F_CosVB((vl_r_d * 2 * ValPI) / (2 *
vl_r_dblHalfEarth)) - :F_SinVB(vl_r_l) * :F_SinVB(vl_r_l)) /
(:F_CosVB(vl_r_l) * :F_CosVB(vl_r_l)))
PROCEDURE F_CosVB(x)
RENVOYER Cosinus(180*x / ValPI)
PROCEDURE F_SinVB(x)
RENVOYER Sinus( 180 * x / ValPI )
PROCEDURE F_Arccos(x est un réel)
RENVOYER ArcTang(-x / Racine(-x * x + 1)) + (2 * ArcTang(1))
--
Cordialement
Christophe Charron
Service Développement
PROLOGIQ
7 bis Rue des Aulnes
69410 Champagne au Mont d'Or
Tel : 0 437 499 107
Fax : 0 437 499 105
mailto:
"B. Neve" a écrit dans le message de
news:42e50d4e$0$1985$Bonjour,
Je sais que certains d'entre vous utilisent MapPoint 2004 dans leur
application. Après avoir longuement cherché, j'ai (enfin) trouvé un bout
decode qui permettrait de recevoir la latitude et la longitude en fonction
d'un point sélectionné sur la carte. Cela ouvre bien évidemment des
grandesperspectives pour la gestion des tournées etc etc...
Il me reste cependant un petit problème et je fais appel donc à vous.
L'idée est donc d'avoir DANS une fenêtre Windev, une carte et des
toolbars
de Mappoint. Ensuite, lorsque l'on a trouvé le point pour lequel on veut
connaître la Longitude et la Latitude, on fait Shift+Clic. Cela déclenche
alors la procédure de calcul. Seulement voilà, autant la Latitude est
correcte, autant la longitude ne l'est pas. Si quelqu'un a des
connaissancesde géo, il pourra peut-être trouver la solution.
Pour parvenir à faire les tests, il suffit de créer une fenêtre avec
champ
active X (ObjMap) dedans. Ensuite, donner à cette Fenêtre la propriété
maximisée à l'ouverture et ajouter un barre de message
L'active X se nomme ObjMap dans l'exemple.
Voici le code que j'utilise
// Initialisation de ObjMap
ObjMap>>NewMap(2)
ObjMap>>Units=1
ObjMap>>Appearance(1)
ActiveXEvénement("bibi",ObjMap,"BeforeClick")
// Initialisation de la fenêtre
//Faire apparaître les barres d'outils
OBJDYN est un objet OLE dynamique
MultitâcheRepeint()
OBJDYN=ObjMap>>Toolbars>>ITEM(1)
OBJDYN>>Visible=OLETrue
MultitâcheRepeint()
OBJDYN=ObjMap>>Toolbars>>ITEM(2)
OBJDYN>>Visible=OLETrue
MultitâcheRepeint()
libérer OBJDYN
//Fermeture de la fenêtre
ObjMap>>ActiveMap>>Saved = OLETrue
ObjMap>>CloseMap
//Procédure globale de la fenêtre qui sera appelée lorsque l'on clique
sur
la carte de l'Active X
PROCEDURE OnClick()
Mylat,mylon are currency
IF ToucheEnfoncée(teShift) THEN
Message(ObjMap>>activemap>>Pixelsize)
XX is currency
YY is currency
Res est un entier = CurseurPos ( cpClient )
SI Res <> -1 ALORS
XX=PoidsFaible(Res)-ObjMap..X
YY=PoidsFort(Res)-ObjMap..Y
FIN
Message(XX+"-"+YY)
YY-S
XX-=2
Omap est un objet OLE dynamique
Omap = ObjMap>>ActiveMap
OLoc est un objet OLE dynamique
OLoc = Omap>>XYToLocation(XX, YY)
ObjMap>>ActiveMap>>AddPushpin(OLoc,"Warehouse")
CalcPos(Omap, OLoc, Mylat, mylon)
Message("Lat : "+Mylat+" Lon : "+mylon)
END
//Procédure qui détermine la Latitude et la Longitude à partir du point
cliqué
PROCEDURE CalcPos(OBJMM,locX,DblLat,DblLon)
locNorthPole est un objet OLE dynamique
locSantaCruz est un objet OLE dynamique
dblHalfEarth is currency
dblQuarterEarth is currency
l is currency
d is currency
locNorthPole=OBJMM>>GetLocation(90, 0)
locSantaCruz=OBJMM>>GetLocation(0, -90)
dblHalfEarth=OBJMM>>Distance(locNorthPole,OBJMM>>GetLocation(-90, 0))
//Quarter of that is the max distance a point may be away from
locSantaCruzand still be in western hemisphere
dblQuarterEarth = dblHalfEarth / 2
// Compute latitude from distance to north pole
DblLat = 90 - 180 * OBJMM>>Distance(locNorthPole, locX) / dblHalfEarth
// Compute great circle distance to locX from point on Greenwich meridian
and computed Latitude
d = OBJMM>>Distance(OBJMM>>GetLocation(DblLat, 0), locX)
//convert latitude to radian
l = (DblLat / 180) * ValPI
//Compute Longitude from great circle distance
blub is real sur 8
DblLon = 180 * ArcCos((Cos((d * 2 * ValPI) / (2 * dblHalfEarth)) - Sin(l)
*Sin(l)) / (Cos(l) * Cos(l))) / ValPI
IF OBJMM>>Distance(locSantaCruz, locX) < dblQuarterEarth THEN DblLon
= -DblLon
RETURN
Cette fonction est basée sur du code VB que j'ai trouvé ici... Je ne vois
cependant pas où j'ai commis une faute.
Pour ceux que cela intéresse, tout cela est dans une fenêtre (V9) et il
n'ya qu'à demander. Il faut bien évidemment Mappoint installé sur la machine
pour le fonctionnement. CQFD
Merci d'avance,
Benoît Nève
Bonjour,
il me semble que VB et Windev ne fonctionnent pas de la même manière.
J'avais ,pour cette raison, me semble-t'il me souvenir, contourné de la
manière suivante dans MapPoint2002 :
dblLon = :F_Arccos((:F_CosVB((vl_r_d * 2 * ValPI) / (2 *
vl_r_dblHalfEarth)) - :F_SinVB(vl_r_l) * :F_SinVB(vl_r_l)) /
(:F_CosVB(vl_r_l) * :F_CosVB(vl_r_l)))
PROCEDURE F_CosVB(x)
RENVOYER Cosinus(180*x / ValPI)
PROCEDURE F_SinVB(x)
RENVOYER Sinus( 180 * x / ValPI )
PROCEDURE F_Arccos(x est un réel)
RENVOYER ArcTang(-x / Racine(-x * x + 1)) + (2 * ArcTang(1))
--
Cordialement
Christophe Charron
Service Développement
PROLOGIQ
7 bis Rue des Aulnes
69410 Champagne au Mont d'Or
Tel : 0 437 499 107
Fax : 0 437 499 105
mailto:
"B. Neve" a écrit dans le message de
news:42e50d4e$0$1985$Bonjour,
Je sais que certains d'entre vous utilisent MapPoint 2004 dans leur
application. Après avoir longuement cherché, j'ai (enfin) trouvé un bout
decode qui permettrait de recevoir la latitude et la longitude en fonction
d'un point sélectionné sur la carte. Cela ouvre bien évidemment des
grandesperspectives pour la gestion des tournées etc etc...
Il me reste cependant un petit problème et je fais appel donc à vous.
L'idée est donc d'avoir DANS une fenêtre Windev, une carte et des
toolbars
de Mappoint. Ensuite, lorsque l'on a trouvé le point pour lequel on veut
connaître la Longitude et la Latitude, on fait Shift+Clic. Cela déclenche
alors la procédure de calcul. Seulement voilà, autant la Latitude est
correcte, autant la longitude ne l'est pas. Si quelqu'un a des
connaissancesde géo, il pourra peut-être trouver la solution.
Pour parvenir à faire les tests, il suffit de créer une fenêtre avec
champ
active X (ObjMap) dedans. Ensuite, donner à cette Fenêtre la propriété
maximisée à l'ouverture et ajouter un barre de message
L'active X se nomme ObjMap dans l'exemple.
Voici le code que j'utilise
// Initialisation de ObjMap
ObjMap>>NewMap(2)
ObjMap>>Units=1
ObjMap>>Appearance(1)
ActiveXEvénement("bibi",ObjMap,"BeforeClick")
// Initialisation de la fenêtre
//Faire apparaître les barres d'outils
OBJDYN est un objet OLE dynamique
MultitâcheRepeint()
OBJDYN=ObjMap>>Toolbars>>ITEM(1)
OBJDYN>>Visible=OLETrue
MultitâcheRepeint()
OBJDYN=ObjMap>>Toolbars>>ITEM(2)
OBJDYN>>Visible=OLETrue
MultitâcheRepeint()
libérer OBJDYN
//Fermeture de la fenêtre
ObjMap>>ActiveMap>>Saved = OLETrue
ObjMap>>CloseMap
//Procédure globale de la fenêtre qui sera appelée lorsque l'on clique
sur
la carte de l'Active X
PROCEDURE OnClick()
Mylat,mylon are currency
IF ToucheEnfoncée(teShift) THEN
Message(ObjMap>>activemap>>Pixelsize)
XX is currency
YY is currency
Res est un entier = CurseurPos ( cpClient )
SI Res <> -1 ALORS
XX=PoidsFaible(Res)-ObjMap..X
YY=PoidsFort(Res)-ObjMap..Y
FIN
Message(XX+"-"+YY)
YY-S
XX-=2
Omap est un objet OLE dynamique
Omap = ObjMap>>ActiveMap
OLoc est un objet OLE dynamique
OLoc = Omap>>XYToLocation(XX, YY)
ObjMap>>ActiveMap>>AddPushpin(OLoc,"Warehouse")
CalcPos(Omap, OLoc, Mylat, mylon)
Message("Lat : "+Mylat+" Lon : "+mylon)
END
//Procédure qui détermine la Latitude et la Longitude à partir du point
cliqué
PROCEDURE CalcPos(OBJMM,locX,DblLat,DblLon)
locNorthPole est un objet OLE dynamique
locSantaCruz est un objet OLE dynamique
dblHalfEarth is currency
dblQuarterEarth is currency
l is currency
d is currency
locNorthPole=OBJMM>>GetLocation(90, 0)
locSantaCruz=OBJMM>>GetLocation(0, -90)
dblHalfEarth=OBJMM>>Distance(locNorthPole,OBJMM>>GetLocation(-90, 0))
//Quarter of that is the max distance a point may be away from
locSantaCruzand still be in western hemisphere
dblQuarterEarth = dblHalfEarth / 2
// Compute latitude from distance to north pole
DblLat = 90 - 180 * OBJMM>>Distance(locNorthPole, locX) / dblHalfEarth
// Compute great circle distance to locX from point on Greenwich meridian
and computed Latitude
d = OBJMM>>Distance(OBJMM>>GetLocation(DblLat, 0), locX)
//convert latitude to radian
l = (DblLat / 180) * ValPI
//Compute Longitude from great circle distance
blub is real sur 8
DblLon = 180 * ArcCos((Cos((d * 2 * ValPI) / (2 * dblHalfEarth)) - Sin(l)
*Sin(l)) / (Cos(l) * Cos(l))) / ValPI
IF OBJMM>>Distance(locSantaCruz, locX) < dblQuarterEarth THEN DblLon
= -DblLon
RETURN
Cette fonction est basée sur du code VB que j'ai trouvé ici... Je ne vois
cependant pas où j'ai commis une faute.
Pour ceux que cela intéresse, tout cela est dans une fenêtre (V9) et il
n'ya qu'à demander. Il faut bien évidemment Mappoint installé sur la machine
pour le fonctionnement. CQFD
Merci d'avance,
Benoît Nève
Bonjour,
il me semble que VB et Windev ne fonctionnent pas de la même manière.
J'avais ,pour cette raison, me semble-t'il me souvenir, contourné de la
manière suivante dans MapPoint2002 :
dblLon = :F_Arccos((:F_CosVB((vl_r_d * 2 * ValPI) / (2 *
vl_r_dblHalfEarth)) - :F_SinVB(vl_r_l) * :F_SinVB(vl_r_l)) /
(:F_CosVB(vl_r_l) * :F_CosVB(vl_r_l)))
PROCEDURE F_CosVB(x)
RENVOYER Cosinus(180*x / ValPI)
PROCEDURE F_SinVB(x)
RENVOYER Sinus( 180 * x / ValPI )
PROCEDURE F_Arccos(x est un réel)
RENVOYER ArcTang(-x / Racine(-x * x + 1)) + (2 * ArcTang(1))
--
Cordialement
Christophe Charron
Service Développement
PROLOGIQ
7 bis Rue des Aulnes
69410 Champagne au Mont d'Or
Tel : 0 437 499 107
Fax : 0 437 499 105
mailto:developpement@prologiq.fr
"B. Neve" <_nospam_bne@dagico.com> a écrit dans le message de
news:42e50d4e$0$1985$ba620e4c@news.skynet.be...
Bonjour,
Je sais que certains d'entre vous utilisent MapPoint 2004 dans leur
application. Après avoir longuement cherché, j'ai (enfin) trouvé un bout
de
code qui permettrait de recevoir la latitude et la longitude en fonction
d'un point sélectionné sur la carte. Cela ouvre bien évidemment des
grandes
perspectives pour la gestion des tournées etc etc...
Il me reste cependant un petit problème et je fais appel donc à vous.
L'idée est donc d'avoir DANS une fenêtre Windev, une carte et des
toolbars
de Mappoint. Ensuite, lorsque l'on a trouvé le point pour lequel on veut
connaître la Longitude et la Latitude, on fait Shift+Clic. Cela déclenche
alors la procédure de calcul. Seulement voilà, autant la Latitude est
correcte, autant la longitude ne l'est pas. Si quelqu'un a des
connaissances
de géo, il pourra peut-être trouver la solution.
Pour parvenir à faire les tests, il suffit de créer une fenêtre avec
champ
active X (ObjMap) dedans. Ensuite, donner à cette Fenêtre la propriété
maximisée à l'ouverture et ajouter un barre de message
L'active X se nomme ObjMap dans l'exemple.
Voici le code que j'utilise
// Initialisation de ObjMap
ObjMap>>NewMap(2)
ObjMap>>Units=1
ObjMap>>Appearance(1)
ActiveXEvénement("bibi",ObjMap,"BeforeClick")
// Initialisation de la fenêtre
//Faire apparaître les barres d'outils
OBJDYN est un objet OLE dynamique
MultitâcheRepeint()
OBJDYN=ObjMap>>Toolbars>>ITEM(1)
OBJDYN>>Visible=OLETrue
MultitâcheRepeint()
OBJDYN=ObjMap>>Toolbars>>ITEM(2)
OBJDYN>>Visible=OLETrue
MultitâcheRepeint()
libérer OBJDYN
//Fermeture de la fenêtre
ObjMap>>ActiveMap>>Saved = OLETrue
ObjMap>>CloseMap
//Procédure globale de la fenêtre qui sera appelée lorsque l'on clique
sur
la carte de l'Active X
PROCEDURE OnClick()
Mylat,mylon are currency
IF ToucheEnfoncée(teShift) THEN
Message(ObjMap>>activemap>>Pixelsize)
XX is currency
YY is currency
Res est un entier = CurseurPos ( cpClient )
SI Res <> -1 ALORS
XX=PoidsFaible(Res)-ObjMap..X
YY=PoidsFort(Res)-ObjMap..Y
FIN
Message(XX+"-"+YY)
YY-S
XX-=2
Omap est un objet OLE dynamique
Omap = ObjMap>>ActiveMap
OLoc est un objet OLE dynamique
OLoc = Omap>>XYToLocation(XX, YY)
ObjMap>>ActiveMap>>AddPushpin(OLoc,"Warehouse")
CalcPos(Omap, OLoc, Mylat, mylon)
Message("Lat : "+Mylat+" Lon : "+mylon)
END
//Procédure qui détermine la Latitude et la Longitude à partir du point
cliqué
PROCEDURE CalcPos(OBJMM,locX,DblLat,DblLon)
locNorthPole est un objet OLE dynamique
locSantaCruz est un objet OLE dynamique
dblHalfEarth is currency
dblQuarterEarth is currency
l is currency
d is currency
locNorthPole=OBJMM>>GetLocation(90, 0)
locSantaCruz=OBJMM>>GetLocation(0, -90)
dblHalfEarth=OBJMM>>Distance(locNorthPole,OBJMM>>GetLocation(-90, 0))
//Quarter of that is the max distance a point may be away from
locSantaCruz
and still be in western hemisphere
dblQuarterEarth = dblHalfEarth / 2
// Compute latitude from distance to north pole
DblLat = 90 - 180 * OBJMM>>Distance(locNorthPole, locX) / dblHalfEarth
// Compute great circle distance to locX from point on Greenwich meridian
and computed Latitude
d = OBJMM>>Distance(OBJMM>>GetLocation(DblLat, 0), locX)
//convert latitude to radian
l = (DblLat / 180) * ValPI
//Compute Longitude from great circle distance
blub is real sur 8
DblLon = 180 * ArcCos((Cos((d * 2 * ValPI) / (2 * dblHalfEarth)) - Sin(l)
*
Sin(l)) / (Cos(l) * Cos(l))) / ValPI
IF OBJMM>>Distance(locSantaCruz, locX) < dblQuarterEarth THEN DblLon
= -DblLon
RETURN
Cette fonction est basée sur du code VB que j'ai trouvé ici... Je ne vois
cependant pas où j'ai commis une faute.
Pour ceux que cela intéresse, tout cela est dans une fenêtre (V9) et il
n'y
a qu'à demander. Il faut bien évidemment Mappoint installé sur la machine
pour le fonctionnement. CQFD
Merci d'avance,
Benoît Nève
Bonjour,
il me semble que VB et Windev ne fonctionnent pas de la même manière.
J'avais ,pour cette raison, me semble-t'il me souvenir, contourné de la
manière suivante dans MapPoint2002 :
dblLon = :F_Arccos((:F_CosVB((vl_r_d * 2 * ValPI) / (2 *
vl_r_dblHalfEarth)) - :F_SinVB(vl_r_l) * :F_SinVB(vl_r_l)) /
(:F_CosVB(vl_r_l) * :F_CosVB(vl_r_l)))
PROCEDURE F_CosVB(x)
RENVOYER Cosinus(180*x / ValPI)
PROCEDURE F_SinVB(x)
RENVOYER Sinus( 180 * x / ValPI )
PROCEDURE F_Arccos(x est un réel)
RENVOYER ArcTang(-x / Racine(-x * x + 1)) + (2 * ArcTang(1))
--
Cordialement
Christophe Charron
Service Développement
PROLOGIQ
7 bis Rue des Aulnes
69410 Champagne au Mont d'Or
Tel : 0 437 499 107
Fax : 0 437 499 105
mailto:
"B. Neve" a écrit dans le message de
news:42e50d4e$0$1985$Bonjour,
Je sais que certains d'entre vous utilisent MapPoint 2004 dans leur
application. Après avoir longuement cherché, j'ai (enfin) trouvé un bout
decode qui permettrait de recevoir la latitude et la longitude en fonction
d'un point sélectionné sur la carte. Cela ouvre bien évidemment des
grandesperspectives pour la gestion des tournées etc etc...
Il me reste cependant un petit problème et je fais appel donc à vous.
L'idée est donc d'avoir DANS une fenêtre Windev, une carte et des
toolbars
de Mappoint. Ensuite, lorsque l'on a trouvé le point pour lequel on veut
connaître la Longitude et la Latitude, on fait Shift+Clic. Cela déclenche
alors la procédure de calcul. Seulement voilà, autant la Latitude est
correcte, autant la longitude ne l'est pas. Si quelqu'un a des
connaissancesde géo, il pourra peut-être trouver la solution.
Pour parvenir à faire les tests, il suffit de créer une fenêtre avec
champ
active X (ObjMap) dedans. Ensuite, donner à cette Fenêtre la propriété
maximisée à l'ouverture et ajouter un barre de message
L'active X se nomme ObjMap dans l'exemple.
Voici le code que j'utilise
// Initialisation de ObjMap
ObjMap>>NewMap(2)
ObjMap>>Units=1
ObjMap>>Appearance(1)
ActiveXEvénement("bibi",ObjMap,"BeforeClick")
// Initialisation de la fenêtre
//Faire apparaître les barres d'outils
OBJDYN est un objet OLE dynamique
MultitâcheRepeint()
OBJDYN=ObjMap>>Toolbars>>ITEM(1)
OBJDYN>>Visible=OLETrue
MultitâcheRepeint()
OBJDYN=ObjMap>>Toolbars>>ITEM(2)
OBJDYN>>Visible=OLETrue
MultitâcheRepeint()
libérer OBJDYN
//Fermeture de la fenêtre
ObjMap>>ActiveMap>>Saved = OLETrue
ObjMap>>CloseMap
//Procédure globale de la fenêtre qui sera appelée lorsque l'on clique
sur
la carte de l'Active X
PROCEDURE OnClick()
Mylat,mylon are currency
IF ToucheEnfoncée(teShift) THEN
Message(ObjMap>>activemap>>Pixelsize)
XX is currency
YY is currency
Res est un entier = CurseurPos ( cpClient )
SI Res <> -1 ALORS
XX=PoidsFaible(Res)-ObjMap..X
YY=PoidsFort(Res)-ObjMap..Y
FIN
Message(XX+"-"+YY)
YY-S
XX-=2
Omap est un objet OLE dynamique
Omap = ObjMap>>ActiveMap
OLoc est un objet OLE dynamique
OLoc = Omap>>XYToLocation(XX, YY)
ObjMap>>ActiveMap>>AddPushpin(OLoc,"Warehouse")
CalcPos(Omap, OLoc, Mylat, mylon)
Message("Lat : "+Mylat+" Lon : "+mylon)
END
//Procédure qui détermine la Latitude et la Longitude à partir du point
cliqué
PROCEDURE CalcPos(OBJMM,locX,DblLat,DblLon)
locNorthPole est un objet OLE dynamique
locSantaCruz est un objet OLE dynamique
dblHalfEarth is currency
dblQuarterEarth is currency
l is currency
d is currency
locNorthPole=OBJMM>>GetLocation(90, 0)
locSantaCruz=OBJMM>>GetLocation(0, -90)
dblHalfEarth=OBJMM>>Distance(locNorthPole,OBJMM>>GetLocation(-90, 0))
//Quarter of that is the max distance a point may be away from
locSantaCruzand still be in western hemisphere
dblQuarterEarth = dblHalfEarth / 2
// Compute latitude from distance to north pole
DblLat = 90 - 180 * OBJMM>>Distance(locNorthPole, locX) / dblHalfEarth
// Compute great circle distance to locX from point on Greenwich meridian
and computed Latitude
d = OBJMM>>Distance(OBJMM>>GetLocation(DblLat, 0), locX)
//convert latitude to radian
l = (DblLat / 180) * ValPI
//Compute Longitude from great circle distance
blub is real sur 8
DblLon = 180 * ArcCos((Cos((d * 2 * ValPI) / (2 * dblHalfEarth)) - Sin(l)
*Sin(l)) / (Cos(l) * Cos(l))) / ValPI
IF OBJMM>>Distance(locSantaCruz, locX) < dblQuarterEarth THEN DblLon
= -DblLon
RETURN
Cette fonction est basée sur du code VB que j'ai trouvé ici... Je ne vois
cependant pas où j'ai commis une faute.
Pour ceux que cela intéresse, tout cela est dans une fenêtre (V9) et il
n'ya qu'à demander. Il faut bien évidemment Mappoint installé sur la machine
pour le fonctionnement. CQFD
Merci d'avance,
Benoît Nève
Absolument parfait...
Un grand merci, à charge de revanche.
Benoit
"Dev" a écrit dans le message de news:
42e5e744$0$2377$
> Bonjour,
> il me semble que VB et Windev ne fonctionnent pas de la même manière.
> J'avais ,pour cette raison, me semble-t'il me souvenir, contourné de la
> manière suivante dans MapPoint2002 :
>
> dblLon = :F_Arccos((:F_CosVB((vl_r_d * 2 * ValPI) / (2 *
> vl_r_dblHalfEarth)) - :F_SinVB(vl_r_l) * :F_SinVB(vl_r_l)) /
> (:F_CosVB(vl_r_l) * :F_CosVB(vl_r_l)))
>
> PROCEDURE F_CosVB(x)
> RENVOYER Cosinus(180*x / ValPI)
>
> PROCEDURE F_SinVB(x)
> RENVOYER Sinus( 180 * x / ValPI )
>
> PROCEDURE F_Arccos(x est un réel)
> RENVOYER ArcTang(-x / Racine(-x * x + 1)) + (2 * ArcTang(1))
>
>
> --
> Cordialement
> Christophe Charron
>
> Service Développement
> PROLOGIQ
> 7 bis Rue des Aulnes
> 69410 Champagne au Mont d'Or
>
> Tel : 0 437 499 107
> Fax : 0 437 499 105
> mailto:
>
> "B. Neve" a écrit dans le message de
> news:42e50d4e$0$1985$
>> Bonjour,
>>
>> Je sais que certains d'entre vous utilisent MapPoint 2004 dans leur
>> application. Après avoir longuement cherché, j'ai (enfin) trouvé un
> de
>> code qui permettrait de recevoir la latitude et la longitude en
>> d'un point sélectionné sur la carte. Cela ouvre bien évidemment des
> grandes
>> perspectives pour la gestion des tournées etc etc...
>>
>> Il me reste cependant un petit problème et je fais appel donc à vous.
>> L'idée est donc d'avoir DANS une fenêtre Windev, une carte et des
>> toolbars
>> de Mappoint. Ensuite, lorsque l'on a trouvé le point pour lequel on
>> connaître la Longitude et la Latitude, on fait Shift+Clic. Cela
>> alors la procédure de calcul. Seulement voilà, autant la Latitude est
>> correcte, autant la longitude ne l'est pas. Si quelqu'un a des
> connaissances
>> de géo, il pourra peut-être trouver la solution.
>>
>> Pour parvenir à faire les tests, il suffit de créer une fenêtre avec
>> champ
>> active X (ObjMap) dedans. Ensuite, donner à cette Fenêtre la propriété
>> maximisée à l'ouverture et ajouter un barre de message
>>
>> L'active X se nomme ObjMap dans l'exemple.
>>
>> Voici le code que j'utilise
>>
>> // Initialisation de ObjMap
>> ObjMap>>NewMap(2)
>> ObjMap>>Units=1
>> ObjMap>>Appearance(1)
>> ActiveXEvénement("bibi",ObjMap,"BeforeClick")
>>
>> // Initialisation de la fenêtre
>> //Faire apparaître les barres d'outils
>> OBJDYN est un objet OLE dynamique
>> MultitâcheRepeint()
>> OBJDYN=ObjMap>>Toolbars>>ITEM(1)
>> OBJDYN>>Visible=OLETrue
>> MultitâcheRepeint()
>> OBJDYN=ObjMap>>Toolbars>>ITEM(2)
>> OBJDYN>>Visible=OLETrue
>> MultitâcheRepeint()
>> libérer OBJDYN
>>
>>
>> //Fermeture de la fenêtre
>> ObjMap>>ActiveMap>>Saved = OLETrue
>> ObjMap>>CloseMap
>>
>>
>>
>> //Procédure globale de la fenêtre qui sera appelée lorsque l'on clique
>> sur
>> la carte de l'Active X
>> PROCEDURE OnClick()
>> Mylat,mylon are currency
>> IF ToucheEnfoncée(teShift) THEN
>> Message(ObjMap>>activemap>>Pixelsize)
>> XX is currency
>> YY is currency
>> Res est un entier = CurseurPos ( cpClient )
>> SI Res <> -1 ALORS
>> XX=PoidsFaible(Res)-ObjMap..X
>> YY=PoidsFort(Res)-ObjMap..Y
>> FIN
>> Message(XX+"-"+YY)
>> YY-S
>> XX-=2
>> Omap est un objet OLE dynamique
>> Omap = ObjMap>>ActiveMap
>> OLoc est un objet OLE dynamique
>> OLoc = Omap>>XYToLocation(XX, YY)
>> ObjMap>>ActiveMap>>AddPushpin(OLoc,"Warehouse")
>> CalcPos(Omap, OLoc, Mylat, mylon)
>> Message("Lat : "+Mylat+" Lon : "+mylon)
>> END
>>
>>
>>
>>
>> //Procédure qui détermine la Latitude et la Longitude à partir du point
>> cliqué
>> PROCEDURE CalcPos(OBJMM,locX,DblLat,DblLon)
>> locNorthPole est un objet OLE dynamique
>> locSantaCruz est un objet OLE dynamique
>> dblHalfEarth is currency
>> dblQuarterEarth is currency
>> l is currency
>> d is currency
>> locNorthPole=OBJMM>>GetLocation(90, 0)
>> locSantaCruz=OBJMM>>GetLocation(0, -90)
>> dblHalfEarth=OBJMM>>Distance(locNorthPole,OBJMM>>GetLocation(-90, 0))
>> //Quarter of that is the max distance a point may be away from
> locSantaCruz
>> and still be in western hemisphere
>> dblQuarterEarth = dblHalfEarth / 2
>> // Compute latitude from distance to north pole
>> DblLat = 90 - 180 * OBJMM>>Distance(locNorthPole, locX) / dblHalfEarth
>> // Compute great circle distance to locX from point on Greenwich
>> and computed Latitude
>> d = OBJMM>>Distance(OBJMM>>GetLocation(DblLat, 0), locX)
>> //convert latitude to radian
>> l = (DblLat / 180) * ValPI
>> //Compute Longitude from great circle distance
>> blub is real sur 8
>> DblLon = 180 * ArcCos((Cos((d * 2 * ValPI) / (2 * dblHalfEarth)) -
> *
>> Sin(l)) / (Cos(l) * Cos(l))) / ValPI
>> IF OBJMM>>Distance(locSantaCruz, locX) < dblQuarterEarth THEN DblLon
>> = -DblLon
>> RETURN
>>
>> Cette fonction est basée sur du code VB que j'ai trouvé ici... Je ne
>> cependant pas où j'ai commis une faute.
>>
>> Pour ceux que cela intéresse, tout cela est dans une fenêtre (V9) et il
> n'y
>> a qu'à demander. Il faut bien évidemment Mappoint installé sur la
>> pour le fonctionnement. CQFD
>>
>> Merci d'avance,
>>
>>
>> Benoît Nève
>>
>>
>
>
Absolument parfait...
Un grand merci, à charge de revanche.
Benoit
"Dev" <wind_seven@prologiq.fr> a écrit dans le message de news:
42e5e744$0$2377$afc38c87@news.easynet.fr...
> Bonjour,
> il me semble que VB et Windev ne fonctionnent pas de la même manière.
> J'avais ,pour cette raison, me semble-t'il me souvenir, contourné de la
> manière suivante dans MapPoint2002 :
>
> dblLon = :F_Arccos((:F_CosVB((vl_r_d * 2 * ValPI) / (2 *
> vl_r_dblHalfEarth)) - :F_SinVB(vl_r_l) * :F_SinVB(vl_r_l)) /
> (:F_CosVB(vl_r_l) * :F_CosVB(vl_r_l)))
>
> PROCEDURE F_CosVB(x)
> RENVOYER Cosinus(180*x / ValPI)
>
> PROCEDURE F_SinVB(x)
> RENVOYER Sinus( 180 * x / ValPI )
>
> PROCEDURE F_Arccos(x est un réel)
> RENVOYER ArcTang(-x / Racine(-x * x + 1)) + (2 * ArcTang(1))
>
>
> --
> Cordialement
> Christophe Charron
>
> Service Développement
> PROLOGIQ
> 7 bis Rue des Aulnes
> 69410 Champagne au Mont d'Or
>
> Tel : 0 437 499 107
> Fax : 0 437 499 105
> mailto:developpement@prologiq.fr
>
> "B. Neve" <_nospam_bne@dagico.com> a écrit dans le message de
> news:42e50d4e$0$1985$ba620e4c@news.skynet.be...
>> Bonjour,
>>
>> Je sais que certains d'entre vous utilisent MapPoint 2004 dans leur
>> application. Après avoir longuement cherché, j'ai (enfin) trouvé un
> de
>> code qui permettrait de recevoir la latitude et la longitude en
>> d'un point sélectionné sur la carte. Cela ouvre bien évidemment des
> grandes
>> perspectives pour la gestion des tournées etc etc...
>>
>> Il me reste cependant un petit problème et je fais appel donc à vous.
>> L'idée est donc d'avoir DANS une fenêtre Windev, une carte et des
>> toolbars
>> de Mappoint. Ensuite, lorsque l'on a trouvé le point pour lequel on
>> connaître la Longitude et la Latitude, on fait Shift+Clic. Cela
>> alors la procédure de calcul. Seulement voilà, autant la Latitude est
>> correcte, autant la longitude ne l'est pas. Si quelqu'un a des
> connaissances
>> de géo, il pourra peut-être trouver la solution.
>>
>> Pour parvenir à faire les tests, il suffit de créer une fenêtre avec
>> champ
>> active X (ObjMap) dedans. Ensuite, donner à cette Fenêtre la propriété
>> maximisée à l'ouverture et ajouter un barre de message
>>
>> L'active X se nomme ObjMap dans l'exemple.
>>
>> Voici le code que j'utilise
>>
>> // Initialisation de ObjMap
>> ObjMap>>NewMap(2)
>> ObjMap>>Units=1
>> ObjMap>>Appearance(1)
>> ActiveXEvénement("bibi",ObjMap,"BeforeClick")
>>
>> // Initialisation de la fenêtre
>> //Faire apparaître les barres d'outils
>> OBJDYN est un objet OLE dynamique
>> MultitâcheRepeint()
>> OBJDYN=ObjMap>>Toolbars>>ITEM(1)
>> OBJDYN>>Visible=OLETrue
>> MultitâcheRepeint()
>> OBJDYN=ObjMap>>Toolbars>>ITEM(2)
>> OBJDYN>>Visible=OLETrue
>> MultitâcheRepeint()
>> libérer OBJDYN
>>
>>
>> //Fermeture de la fenêtre
>> ObjMap>>ActiveMap>>Saved = OLETrue
>> ObjMap>>CloseMap
>>
>>
>>
>> //Procédure globale de la fenêtre qui sera appelée lorsque l'on clique
>> sur
>> la carte de l'Active X
>> PROCEDURE OnClick()
>> Mylat,mylon are currency
>> IF ToucheEnfoncée(teShift) THEN
>> Message(ObjMap>>activemap>>Pixelsize)
>> XX is currency
>> YY is currency
>> Res est un entier = CurseurPos ( cpClient )
>> SI Res <> -1 ALORS
>> XX=PoidsFaible(Res)-ObjMap..X
>> YY=PoidsFort(Res)-ObjMap..Y
>> FIN
>> Message(XX+"-"+YY)
>> YY-S
>> XX-=2
>> Omap est un objet OLE dynamique
>> Omap = ObjMap>>ActiveMap
>> OLoc est un objet OLE dynamique
>> OLoc = Omap>>XYToLocation(XX, YY)
>> ObjMap>>ActiveMap>>AddPushpin(OLoc,"Warehouse")
>> CalcPos(Omap, OLoc, Mylat, mylon)
>> Message("Lat : "+Mylat+" Lon : "+mylon)
>> END
>>
>>
>>
>>
>> //Procédure qui détermine la Latitude et la Longitude à partir du point
>> cliqué
>> PROCEDURE CalcPos(OBJMM,locX,DblLat,DblLon)
>> locNorthPole est un objet OLE dynamique
>> locSantaCruz est un objet OLE dynamique
>> dblHalfEarth is currency
>> dblQuarterEarth is currency
>> l is currency
>> d is currency
>> locNorthPole=OBJMM>>GetLocation(90, 0)
>> locSantaCruz=OBJMM>>GetLocation(0, -90)
>> dblHalfEarth=OBJMM>>Distance(locNorthPole,OBJMM>>GetLocation(-90, 0))
>> //Quarter of that is the max distance a point may be away from
> locSantaCruz
>> and still be in western hemisphere
>> dblQuarterEarth = dblHalfEarth / 2
>> // Compute latitude from distance to north pole
>> DblLat = 90 - 180 * OBJMM>>Distance(locNorthPole, locX) / dblHalfEarth
>> // Compute great circle distance to locX from point on Greenwich
>> and computed Latitude
>> d = OBJMM>>Distance(OBJMM>>GetLocation(DblLat, 0), locX)
>> //convert latitude to radian
>> l = (DblLat / 180) * ValPI
>> //Compute Longitude from great circle distance
>> blub is real sur 8
>> DblLon = 180 * ArcCos((Cos((d * 2 * ValPI) / (2 * dblHalfEarth)) -
> *
>> Sin(l)) / (Cos(l) * Cos(l))) / ValPI
>> IF OBJMM>>Distance(locSantaCruz, locX) < dblQuarterEarth THEN DblLon
>> = -DblLon
>> RETURN
>>
>> Cette fonction est basée sur du code VB que j'ai trouvé ici... Je ne
>> cependant pas où j'ai commis une faute.
>>
>> Pour ceux que cela intéresse, tout cela est dans une fenêtre (V9) et il
> n'y
>> a qu'à demander. Il faut bien évidemment Mappoint installé sur la
>> pour le fonctionnement. CQFD
>>
>> Merci d'avance,
>>
>>
>> Benoît Nève
>>
>>
>
>
Absolument parfait...
Un grand merci, à charge de revanche.
Benoit
"Dev" a écrit dans le message de news:
42e5e744$0$2377$
> Bonjour,
> il me semble que VB et Windev ne fonctionnent pas de la même manière.
> J'avais ,pour cette raison, me semble-t'il me souvenir, contourné de la
> manière suivante dans MapPoint2002 :
>
> dblLon = :F_Arccos((:F_CosVB((vl_r_d * 2 * ValPI) / (2 *
> vl_r_dblHalfEarth)) - :F_SinVB(vl_r_l) * :F_SinVB(vl_r_l)) /
> (:F_CosVB(vl_r_l) * :F_CosVB(vl_r_l)))
>
> PROCEDURE F_CosVB(x)
> RENVOYER Cosinus(180*x / ValPI)
>
> PROCEDURE F_SinVB(x)
> RENVOYER Sinus( 180 * x / ValPI )
>
> PROCEDURE F_Arccos(x est un réel)
> RENVOYER ArcTang(-x / Racine(-x * x + 1)) + (2 * ArcTang(1))
>
>
> --
> Cordialement
> Christophe Charron
>
> Service Développement
> PROLOGIQ
> 7 bis Rue des Aulnes
> 69410 Champagne au Mont d'Or
>
> Tel : 0 437 499 107
> Fax : 0 437 499 105
> mailto:
>
> "B. Neve" a écrit dans le message de
> news:42e50d4e$0$1985$
>> Bonjour,
>>
>> Je sais que certains d'entre vous utilisent MapPoint 2004 dans leur
>> application. Après avoir longuement cherché, j'ai (enfin) trouvé un
> de
>> code qui permettrait de recevoir la latitude et la longitude en
>> d'un point sélectionné sur la carte. Cela ouvre bien évidemment des
> grandes
>> perspectives pour la gestion des tournées etc etc...
>>
>> Il me reste cependant un petit problème et je fais appel donc à vous.
>> L'idée est donc d'avoir DANS une fenêtre Windev, une carte et des
>> toolbars
>> de Mappoint. Ensuite, lorsque l'on a trouvé le point pour lequel on
>> connaître la Longitude et la Latitude, on fait Shift+Clic. Cela
>> alors la procédure de calcul. Seulement voilà, autant la Latitude est
>> correcte, autant la longitude ne l'est pas. Si quelqu'un a des
> connaissances
>> de géo, il pourra peut-être trouver la solution.
>>
>> Pour parvenir à faire les tests, il suffit de créer une fenêtre avec
>> champ
>> active X (ObjMap) dedans. Ensuite, donner à cette Fenêtre la propriété
>> maximisée à l'ouverture et ajouter un barre de message
>>
>> L'active X se nomme ObjMap dans l'exemple.
>>
>> Voici le code que j'utilise
>>
>> // Initialisation de ObjMap
>> ObjMap>>NewMap(2)
>> ObjMap>>Units=1
>> ObjMap>>Appearance(1)
>> ActiveXEvénement("bibi",ObjMap,"BeforeClick")
>>
>> // Initialisation de la fenêtre
>> //Faire apparaître les barres d'outils
>> OBJDYN est un objet OLE dynamique
>> MultitâcheRepeint()
>> OBJDYN=ObjMap>>Toolbars>>ITEM(1)
>> OBJDYN>>Visible=OLETrue
>> MultitâcheRepeint()
>> OBJDYN=ObjMap>>Toolbars>>ITEM(2)
>> OBJDYN>>Visible=OLETrue
>> MultitâcheRepeint()
>> libérer OBJDYN
>>
>>
>> //Fermeture de la fenêtre
>> ObjMap>>ActiveMap>>Saved = OLETrue
>> ObjMap>>CloseMap
>>
>>
>>
>> //Procédure globale de la fenêtre qui sera appelée lorsque l'on clique
>> sur
>> la carte de l'Active X
>> PROCEDURE OnClick()
>> Mylat,mylon are currency
>> IF ToucheEnfoncée(teShift) THEN
>> Message(ObjMap>>activemap>>Pixelsize)
>> XX is currency
>> YY is currency
>> Res est un entier = CurseurPos ( cpClient )
>> SI Res <> -1 ALORS
>> XX=PoidsFaible(Res)-ObjMap..X
>> YY=PoidsFort(Res)-ObjMap..Y
>> FIN
>> Message(XX+"-"+YY)
>> YY-S
>> XX-=2
>> Omap est un objet OLE dynamique
>> Omap = ObjMap>>ActiveMap
>> OLoc est un objet OLE dynamique
>> OLoc = Omap>>XYToLocation(XX, YY)
>> ObjMap>>ActiveMap>>AddPushpin(OLoc,"Warehouse")
>> CalcPos(Omap, OLoc, Mylat, mylon)
>> Message("Lat : "+Mylat+" Lon : "+mylon)
>> END
>>
>>
>>
>>
>> //Procédure qui détermine la Latitude et la Longitude à partir du point
>> cliqué
>> PROCEDURE CalcPos(OBJMM,locX,DblLat,DblLon)
>> locNorthPole est un objet OLE dynamique
>> locSantaCruz est un objet OLE dynamique
>> dblHalfEarth is currency
>> dblQuarterEarth is currency
>> l is currency
>> d is currency
>> locNorthPole=OBJMM>>GetLocation(90, 0)
>> locSantaCruz=OBJMM>>GetLocation(0, -90)
>> dblHalfEarth=OBJMM>>Distance(locNorthPole,OBJMM>>GetLocation(-90, 0))
>> //Quarter of that is the max distance a point may be away from
> locSantaCruz
>> and still be in western hemisphere
>> dblQuarterEarth = dblHalfEarth / 2
>> // Compute latitude from distance to north pole
>> DblLat = 90 - 180 * OBJMM>>Distance(locNorthPole, locX) / dblHalfEarth
>> // Compute great circle distance to locX from point on Greenwich
>> and computed Latitude
>> d = OBJMM>>Distance(OBJMM>>GetLocation(DblLat, 0), locX)
>> //convert latitude to radian
>> l = (DblLat / 180) * ValPI
>> //Compute Longitude from great circle distance
>> blub is real sur 8
>> DblLon = 180 * ArcCos((Cos((d * 2 * ValPI) / (2 * dblHalfEarth)) -
> *
>> Sin(l)) / (Cos(l) * Cos(l))) / ValPI
>> IF OBJMM>>Distance(locSantaCruz, locX) < dblQuarterEarth THEN DblLon
>> = -DblLon
>> RETURN
>>
>> Cette fonction est basée sur du code VB que j'ai trouvé ici... Je ne
>> cependant pas où j'ai commis une faute.
>>
>> Pour ceux que cela intéresse, tout cela est dans une fenêtre (V9) et il
> n'y
>> a qu'à demander. Il faut bien évidemment Mappoint installé sur la
>> pour le fonctionnement. CQFD
>>
>> Merci d'avance,
>>
>>
>> Benoît Nève
>>
>>
>
>
Absolument parfait...
Un grand merci, à charge de revanche.
Benoit
"Dev" a écrit dans le message de news:
42e5e744$0$2377$
> Bonjour,
> il me semble que VB et Windev ne fonctionnent pas de la même manière.
> J'avais ,pour cette raison, me semble-t'il me souvenir, contourné de la
> manière suivante dans MapPoint2002 :
>
> dblLon = :F_Arccos((:F_CosVB((vl_r_d * 2 * ValPI) / (2 *
> vl_r_dblHalfEarth)) - :F_SinVB(vl_r_l) * :F_SinVB(vl_r_l)) /
> (:F_CosVB(vl_r_l) * :F_CosVB(vl_r_l)))
>
> PROCEDURE F_CosVB(x)
> RENVOYER Cosinus(180*x / ValPI)
>
> PROCEDURE F_SinVB(x)
> RENVOYER Sinus( 180 * x / ValPI )
>
> PROCEDURE F_Arccos(x est un réel)
> RENVOYER ArcTang(-x / Racine(-x * x + 1)) + (2 * ArcTang(1))
>
>
> --
> Cordialement
> Christophe Charron
>
> Service Développement
> PROLOGIQ
> 7 bis Rue des Aulnes
> 69410 Champagne au Mont d'Or
>
> Tel : 0 437 499 107
> Fax : 0 437 499 105
> mailto:
>
> "B. Neve" a écrit dans le message de
> news:42e50d4e$0$1985$
>> Bonjour,
>>
>> Je sais que certains d'entre vous utilisent MapPoint 2004 dans leur
>> application. Après avoir longuement cherché, j'ai (enfin) trouvé un
> de
>> code qui permettrait de recevoir la latitude et la longitude en
>> d'un point sélectionné sur la carte. Cela ouvre bien évidemment des
> grandes
>> perspectives pour la gestion des tournées etc etc...
>>
>> Il me reste cependant un petit problème et je fais appel donc à vous.
>> L'idée est donc d'avoir DANS une fenêtre Windev, une carte et des
>> toolbars
>> de Mappoint. Ensuite, lorsque l'on a trouvé le point pour lequel on
>> connaître la Longitude et la Latitude, on fait Shift+Clic. Cela
>> alors la procédure de calcul. Seulement voilà, autant la Latitude est
>> correcte, autant la longitude ne l'est pas. Si quelqu'un a des
> connaissances
>> de géo, il pourra peut-être trouver la solution.
>>
>> Pour parvenir à faire les tests, il suffit de créer une fenêtre avec
>> champ
>> active X (ObjMap) dedans. Ensuite, donner à cette Fenêtre la propriété
>> maximisée à l'ouverture et ajouter un barre de message
>>
>> L'active X se nomme ObjMap dans l'exemple.
>>
>> Voici le code que j'utilise
>>
>> // Initialisation de ObjMap
>> ObjMap>>NewMap(2)
>> ObjMap>>Units=1
>> ObjMap>>Appearance(1)
>> ActiveXEvénement("bibi",ObjMap,"BeforeClick")
>>
>> // Initialisation de la fenêtre
>> //Faire apparaître les barres d'outils
>> OBJDYN est un objet OLE dynamique
>> MultitâcheRepeint()
>> OBJDYN=ObjMap>>Toolbars>>ITEM(1)
>> OBJDYN>>Visible=OLETrue
>> MultitâcheRepeint()
>> OBJDYN=ObjMap>>Toolbars>>ITEM(2)
>> OBJDYN>>Visible=OLETrue
>> MultitâcheRepeint()
>> libérer OBJDYN
>>
>>
>> //Fermeture de la fenêtre
>> ObjMap>>ActiveMap>>Saved = OLETrue
>> ObjMap>>CloseMap
>>
>>
>>
>> //Procédure globale de la fenêtre qui sera appelée lorsque l'on clique
>> sur
>> la carte de l'Active X
>> PROCEDURE OnClick()
>> Mylat,mylon are currency
>> IF ToucheEnfoncée(teShift) THEN
>> Message(ObjMap>>activemap>>Pixelsize)
>> XX is currency
>> YY is currency
>> Res est un entier = CurseurPos ( cpClient )
>> SI Res <> -1 ALORS
>> XX=PoidsFaible(Res)-ObjMap..X
>> YY=PoidsFort(Res)-ObjMap..Y
>> FIN
>> Message(XX+"-"+YY)
>> YY-S
>> XX-=2
>> Omap est un objet OLE dynamique
>> Omap = ObjMap>>ActiveMap
>> OLoc est un objet OLE dynamique
>> OLoc = Omap>>XYToLocation(XX, YY)
>> ObjMap>>ActiveMap>>AddPushpin(OLoc,"Warehouse")
>> CalcPos(Omap, OLoc, Mylat, mylon)
>> Message("Lat : "+Mylat+" Lon : "+mylon)
>> END
>>
>>
>>
>>
>> //Procédure qui détermine la Latitude et la Longitude à partir du point
>> cliqué
>> PROCEDURE CalcPos(OBJMM,locX,DblLat,DblLon)
>> locNorthPole est un objet OLE dynamique
>> locSantaCruz est un objet OLE dynamique
>> dblHalfEarth is currency
>> dblQuarterEarth is currency
>> l is currency
>> d is currency
>> locNorthPole=OBJMM>>GetLocation(90, 0)
>> locSantaCruz=OBJMM>>GetLocation(0, -90)
>> dblHalfEarth=OBJMM>>Distance(locNorthPole,OBJMM>>GetLocation(-90, 0))
>> //Quarter of that is the max distance a point may be away from
> locSantaCruz
>> and still be in western hemisphere
>> dblQuarterEarth = dblHalfEarth / 2
>> // Compute latitude from distance to north pole
>> DblLat = 90 - 180 * OBJMM>>Distance(locNorthPole, locX) / dblHalfEarth
>> // Compute great circle distance to locX from point on Greenwich
>> and computed Latitude
>> d = OBJMM>>Distance(OBJMM>>GetLocation(DblLat, 0), locX)
>> //convert latitude to radian
>> l = (DblLat / 180) * ValPI
>> //Compute Longitude from great circle distance
>> blub is real sur 8
>> DblLon = 180 * ArcCos((Cos((d * 2 * ValPI) / (2 * dblHalfEarth)) -
> *
>> Sin(l)) / (Cos(l) * Cos(l))) / ValPI
>> IF OBJMM>>Distance(locSantaCruz, locX) < dblQuarterEarth THEN DblLon
>> = -DblLon
>> RETURN
>>
>> Cette fonction est basée sur du code VB que j'ai trouvé ici... Je ne
>> cependant pas où j'ai commis une faute.
>>
>> Pour ceux que cela intéresse, tout cela est dans une fenêtre (V9) et il
> n'y
>> a qu'à demander. Il faut bien évidemment Mappoint installé sur la
>> pour le fonctionnement. CQFD
>>
>> Merci d'avance,
>>
>>
>> Benoît Nève
>>
>>
>
>
Absolument parfait...
Un grand merci, à charge de revanche.
Benoit
"Dev" <wind_seven@prologiq.fr> a écrit dans le message de news:
42e5e744$0$2377$afc38c87@news.easynet.fr...
> Bonjour,
> il me semble que VB et Windev ne fonctionnent pas de la même manière.
> J'avais ,pour cette raison, me semble-t'il me souvenir, contourné de la
> manière suivante dans MapPoint2002 :
>
> dblLon = :F_Arccos((:F_CosVB((vl_r_d * 2 * ValPI) / (2 *
> vl_r_dblHalfEarth)) - :F_SinVB(vl_r_l) * :F_SinVB(vl_r_l)) /
> (:F_CosVB(vl_r_l) * :F_CosVB(vl_r_l)))
>
> PROCEDURE F_CosVB(x)
> RENVOYER Cosinus(180*x / ValPI)
>
> PROCEDURE F_SinVB(x)
> RENVOYER Sinus( 180 * x / ValPI )
>
> PROCEDURE F_Arccos(x est un réel)
> RENVOYER ArcTang(-x / Racine(-x * x + 1)) + (2 * ArcTang(1))
>
>
> --
> Cordialement
> Christophe Charron
>
> Service Développement
> PROLOGIQ
> 7 bis Rue des Aulnes
> 69410 Champagne au Mont d'Or
>
> Tel : 0 437 499 107
> Fax : 0 437 499 105
> mailto:developpement@prologiq.fr
>
> "B. Neve" <_nospam_bne@dagico.com> a écrit dans le message de
> news:42e50d4e$0$1985$ba620e4c@news.skynet.be...
>> Bonjour,
>>
>> Je sais que certains d'entre vous utilisent MapPoint 2004 dans leur
>> application. Après avoir longuement cherché, j'ai (enfin) trouvé un
> de
>> code qui permettrait de recevoir la latitude et la longitude en
>> d'un point sélectionné sur la carte. Cela ouvre bien évidemment des
> grandes
>> perspectives pour la gestion des tournées etc etc...
>>
>> Il me reste cependant un petit problème et je fais appel donc à vous.
>> L'idée est donc d'avoir DANS une fenêtre Windev, une carte et des
>> toolbars
>> de Mappoint. Ensuite, lorsque l'on a trouvé le point pour lequel on
>> connaître la Longitude et la Latitude, on fait Shift+Clic. Cela
>> alors la procédure de calcul. Seulement voilà, autant la Latitude est
>> correcte, autant la longitude ne l'est pas. Si quelqu'un a des
> connaissances
>> de géo, il pourra peut-être trouver la solution.
>>
>> Pour parvenir à faire les tests, il suffit de créer une fenêtre avec
>> champ
>> active X (ObjMap) dedans. Ensuite, donner à cette Fenêtre la propriété
>> maximisée à l'ouverture et ajouter un barre de message
>>
>> L'active X se nomme ObjMap dans l'exemple.
>>
>> Voici le code que j'utilise
>>
>> // Initialisation de ObjMap
>> ObjMap>>NewMap(2)
>> ObjMap>>Units=1
>> ObjMap>>Appearance(1)
>> ActiveXEvénement("bibi",ObjMap,"BeforeClick")
>>
>> // Initialisation de la fenêtre
>> //Faire apparaître les barres d'outils
>> OBJDYN est un objet OLE dynamique
>> MultitâcheRepeint()
>> OBJDYN=ObjMap>>Toolbars>>ITEM(1)
>> OBJDYN>>Visible=OLETrue
>> MultitâcheRepeint()
>> OBJDYN=ObjMap>>Toolbars>>ITEM(2)
>> OBJDYN>>Visible=OLETrue
>> MultitâcheRepeint()
>> libérer OBJDYN
>>
>>
>> //Fermeture de la fenêtre
>> ObjMap>>ActiveMap>>Saved = OLETrue
>> ObjMap>>CloseMap
>>
>>
>>
>> //Procédure globale de la fenêtre qui sera appelée lorsque l'on clique
>> sur
>> la carte de l'Active X
>> PROCEDURE OnClick()
>> Mylat,mylon are currency
>> IF ToucheEnfoncée(teShift) THEN
>> Message(ObjMap>>activemap>>Pixelsize)
>> XX is currency
>> YY is currency
>> Res est un entier = CurseurPos ( cpClient )
>> SI Res <> -1 ALORS
>> XX=PoidsFaible(Res)-ObjMap..X
>> YY=PoidsFort(Res)-ObjMap..Y
>> FIN
>> Message(XX+"-"+YY)
>> YY-S
>> XX-=2
>> Omap est un objet OLE dynamique
>> Omap = ObjMap>>ActiveMap
>> OLoc est un objet OLE dynamique
>> OLoc = Omap>>XYToLocation(XX, YY)
>> ObjMap>>ActiveMap>>AddPushpin(OLoc,"Warehouse")
>> CalcPos(Omap, OLoc, Mylat, mylon)
>> Message("Lat : "+Mylat+" Lon : "+mylon)
>> END
>>
>>
>>
>>
>> //Procédure qui détermine la Latitude et la Longitude à partir du point
>> cliqué
>> PROCEDURE CalcPos(OBJMM,locX,DblLat,DblLon)
>> locNorthPole est un objet OLE dynamique
>> locSantaCruz est un objet OLE dynamique
>> dblHalfEarth is currency
>> dblQuarterEarth is currency
>> l is currency
>> d is currency
>> locNorthPole=OBJMM>>GetLocation(90, 0)
>> locSantaCruz=OBJMM>>GetLocation(0, -90)
>> dblHalfEarth=OBJMM>>Distance(locNorthPole,OBJMM>>GetLocation(-90, 0))
>> //Quarter of that is the max distance a point may be away from
> locSantaCruz
>> and still be in western hemisphere
>> dblQuarterEarth = dblHalfEarth / 2
>> // Compute latitude from distance to north pole
>> DblLat = 90 - 180 * OBJMM>>Distance(locNorthPole, locX) / dblHalfEarth
>> // Compute great circle distance to locX from point on Greenwich
>> and computed Latitude
>> d = OBJMM>>Distance(OBJMM>>GetLocation(DblLat, 0), locX)
>> //convert latitude to radian
>> l = (DblLat / 180) * ValPI
>> //Compute Longitude from great circle distance
>> blub is real sur 8
>> DblLon = 180 * ArcCos((Cos((d * 2 * ValPI) / (2 * dblHalfEarth)) -
> *
>> Sin(l)) / (Cos(l) * Cos(l))) / ValPI
>> IF OBJMM>>Distance(locSantaCruz, locX) < dblQuarterEarth THEN DblLon
>> = -DblLon
>> RETURN
>>
>> Cette fonction est basée sur du code VB que j'ai trouvé ici... Je ne
>> cependant pas où j'ai commis une faute.
>>
>> Pour ceux que cela intéresse, tout cela est dans une fenêtre (V9) et il
> n'y
>> a qu'à demander. Il faut bien évidemment Mappoint installé sur la
>> pour le fonctionnement. CQFD
>>
>> Merci d'avance,
>>
>>
>> Benoît Nève
>>
>>
>
>
Absolument parfait...
Un grand merci, à charge de revanche.
Benoit
"Dev" a écrit dans le message de news:
42e5e744$0$2377$
> Bonjour,
> il me semble que VB et Windev ne fonctionnent pas de la même manière.
> J'avais ,pour cette raison, me semble-t'il me souvenir, contourné de la
> manière suivante dans MapPoint2002 :
>
> dblLon = :F_Arccos((:F_CosVB((vl_r_d * 2 * ValPI) / (2 *
> vl_r_dblHalfEarth)) - :F_SinVB(vl_r_l) * :F_SinVB(vl_r_l)) /
> (:F_CosVB(vl_r_l) * :F_CosVB(vl_r_l)))
>
> PROCEDURE F_CosVB(x)
> RENVOYER Cosinus(180*x / ValPI)
>
> PROCEDURE F_SinVB(x)
> RENVOYER Sinus( 180 * x / ValPI )
>
> PROCEDURE F_Arccos(x est un réel)
> RENVOYER ArcTang(-x / Racine(-x * x + 1)) + (2 * ArcTang(1))
>
>
> --
> Cordialement
> Christophe Charron
>
> Service Développement
> PROLOGIQ
> 7 bis Rue des Aulnes
> 69410 Champagne au Mont d'Or
>
> Tel : 0 437 499 107
> Fax : 0 437 499 105
> mailto:
>
> "B. Neve" a écrit dans le message de
> news:42e50d4e$0$1985$
>> Bonjour,
>>
>> Je sais que certains d'entre vous utilisent MapPoint 2004 dans leur
>> application. Après avoir longuement cherché, j'ai (enfin) trouvé un
> de
>> code qui permettrait de recevoir la latitude et la longitude en
>> d'un point sélectionné sur la carte. Cela ouvre bien évidemment des
> grandes
>> perspectives pour la gestion des tournées etc etc...
>>
>> Il me reste cependant un petit problème et je fais appel donc à vous.
>> L'idée est donc d'avoir DANS une fenêtre Windev, une carte et des
>> toolbars
>> de Mappoint. Ensuite, lorsque l'on a trouvé le point pour lequel on
>> connaître la Longitude et la Latitude, on fait Shift+Clic. Cela
>> alors la procédure de calcul. Seulement voilà, autant la Latitude est
>> correcte, autant la longitude ne l'est pas. Si quelqu'un a des
> connaissances
>> de géo, il pourra peut-être trouver la solution.
>>
>> Pour parvenir à faire les tests, il suffit de créer une fenêtre avec
>> champ
>> active X (ObjMap) dedans. Ensuite, donner à cette Fenêtre la propriété
>> maximisée à l'ouverture et ajouter un barre de message
>>
>> L'active X se nomme ObjMap dans l'exemple.
>>
>> Voici le code que j'utilise
>>
>> // Initialisation de ObjMap
>> ObjMap>>NewMap(2)
>> ObjMap>>Units=1
>> ObjMap>>Appearance(1)
>> ActiveXEvénement("bibi",ObjMap,"BeforeClick")
>>
>> // Initialisation de la fenêtre
>> //Faire apparaître les barres d'outils
>> OBJDYN est un objet OLE dynamique
>> MultitâcheRepeint()
>> OBJDYN=ObjMap>>Toolbars>>ITEM(1)
>> OBJDYN>>Visible=OLETrue
>> MultitâcheRepeint()
>> OBJDYN=ObjMap>>Toolbars>>ITEM(2)
>> OBJDYN>>Visible=OLETrue
>> MultitâcheRepeint()
>> libérer OBJDYN
>>
>>
>> //Fermeture de la fenêtre
>> ObjMap>>ActiveMap>>Saved = OLETrue
>> ObjMap>>CloseMap
>>
>>
>>
>> //Procédure globale de la fenêtre qui sera appelée lorsque l'on clique
>> sur
>> la carte de l'Active X
>> PROCEDURE OnClick()
>> Mylat,mylon are currency
>> IF ToucheEnfoncée(teShift) THEN
>> Message(ObjMap>>activemap>>Pixelsize)
>> XX is currency
>> YY is currency
>> Res est un entier = CurseurPos ( cpClient )
>> SI Res <> -1 ALORS
>> XX=PoidsFaible(Res)-ObjMap..X
>> YY=PoidsFort(Res)-ObjMap..Y
>> FIN
>> Message(XX+"-"+YY)
>> YY-S
>> XX-=2
>> Omap est un objet OLE dynamique
>> Omap = ObjMap>>ActiveMap
>> OLoc est un objet OLE dynamique
>> OLoc = Omap>>XYToLocation(XX, YY)
>> ObjMap>>ActiveMap>>AddPushpin(OLoc,"Warehouse")
>> CalcPos(Omap, OLoc, Mylat, mylon)
>> Message("Lat : "+Mylat+" Lon : "+mylon)
>> END
>>
>>
>>
>>
>> //Procédure qui détermine la Latitude et la Longitude à partir du point
>> cliqué
>> PROCEDURE CalcPos(OBJMM,locX,DblLat,DblLon)
>> locNorthPole est un objet OLE dynamique
>> locSantaCruz est un objet OLE dynamique
>> dblHalfEarth is currency
>> dblQuarterEarth is currency
>> l is currency
>> d is currency
>> locNorthPole=OBJMM>>GetLocation(90, 0)
>> locSantaCruz=OBJMM>>GetLocation(0, -90)
>> dblHalfEarth=OBJMM>>Distance(locNorthPole,OBJMM>>GetLocation(-90, 0))
>> //Quarter of that is the max distance a point may be away from
> locSantaCruz
>> and still be in western hemisphere
>> dblQuarterEarth = dblHalfEarth / 2
>> // Compute latitude from distance to north pole
>> DblLat = 90 - 180 * OBJMM>>Distance(locNorthPole, locX) / dblHalfEarth
>> // Compute great circle distance to locX from point on Greenwich
>> and computed Latitude
>> d = OBJMM>>Distance(OBJMM>>GetLocation(DblLat, 0), locX)
>> //convert latitude to radian
>> l = (DblLat / 180) * ValPI
>> //Compute Longitude from great circle distance
>> blub is real sur 8
>> DblLon = 180 * ArcCos((Cos((d * 2 * ValPI) / (2 * dblHalfEarth)) -
> *
>> Sin(l)) / (Cos(l) * Cos(l))) / ValPI
>> IF OBJMM>>Distance(locSantaCruz, locX) < dblQuarterEarth THEN DblLon
>> = -DblLon
>> RETURN
>>
>> Cette fonction est basée sur du code VB que j'ai trouvé ici... Je ne
>> cependant pas où j'ai commis une faute.
>>
>> Pour ceux que cela intéresse, tout cela est dans une fenêtre (V9) et il
> n'y
>> a qu'à demander. Il faut bien évidemment Mappoint installé sur la
>> pour le fonctionnement. CQFD
>>
>> Merci d'avance,
>>
>>
>> Benoît Nève
>>
>>
>
>