begin process at 2008 07 06 00:00:03
1 205 401 membres
368 nouveaux aujourd'hui
14 119 membres club

Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum.
Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : Codage de controle en C++ pour MapPoint [ Archives / Fichier / Disque ] (tanguy_laverdure)

Codage de controle en C++ pour MapPoint le 05/01/2004 09:31:53

tanguy_laverdure

Quelqu'un aurait il deja codé des controles ou fait des developpement en C++ pour Microsoft MapPoint (c'est un logiciel de cartographie).

En fait je recherche comment interroger la BD mappoint pour trouvé toutes les villes d'un departement correspondant a certains criteres
Merci,

Re : Codage de controle en C++ pour MapPoint le 05/01/2004 17:24:29

ymca2003
Tu te sert de MapPoint en tant que contrôle ActiveX dans ton appli ou tu veut faire une Dll COM automotisant MapPoint (qui rajoute une commande dans le menu de MapPoint)

Re : Codage de controle en C++ pour MapPoint le 06/01/2004 08:43:15

tanguy_laverdure
En fait je ne sais pas trop pour le moment. Il se peux qua dans un premier temps, je rajoute une dll dans Mappoint pour automatiser la selection d'un paquet de ville en fonction de certains criteres.
Cependant le but ultime est de faire une appli de routage de vehicule dans laquelle je me servirai de Mappoint en tant que controle ActiveX.

Si tu a des infos je suis preneur
A+

Re : Codage de controle en C++ pour MapPoint le 06/01/2004 12:17:34

ymca2003
pour faire une dll automatisant MapPoint, je te conseil de la faire en Visual Basic (c'est + simple et la doc de Mappoint concerne essentiellement ce langage).

Sinon j'ai un exemple en C++ (sans utiliser les MFC ni ATL, en Win32 pur) qui pose les bases du compléments COM mais qui nécessite une bonne compréhension de l'architecture COM pour pouvoir programmer corectement (je vais essayer de le mettre prochainement).

En utilisant le contrôle activeX, l'exécution est moins rapide s'il faut faire plusieurs appel à la base de donnée MapPoint. En effet, le contrôle s'exécute dans un autre processus et il faut constammant communiquer entre les processus. Mais bon cela dépend de la quantité de données.

En faisant une dll automatisant MapPoint, elle pourra toujours servir si tu passe à une appli avec le contrôle activeX qui pourra se connecter à la dll. ton appli pourra communiquer avec la dll (en sachant qu'elle x'éxecutera dans 2 processus différents)

NB : mes développement concernent MapPoint 2002 et je ne sait pas s'il y a une autre version ultérieure qui modifie la prog.

Re : Codage de controle en C++ pour MapPoint le 07/01/2004 21:57:27

ymca2003
j'ai ajouter un exemple de dll automatisant mappoint :

http://www.cppfrance.com/code.aspx?ID=19358

Re : Codage de controle en C++ pour MapPoint le 02/04/2004 16:12:35

gudmundur

Gudmundur
Je vois que je ne suis pas le seul à essayer de piloter mappoint. Je suis d'accord avec "ymca2003", c'est plus facile en VB. Mais j'ai malgrés tout un soucis, je ne parviens pas à récuperé les coordonnées (latitude/longitude) d'un objet situé sur la carte.
Je parviens à localiser un lieu et à y afficher, par exemple un pushpin, à partir de la latitude et longitude si je les mais dans mon code (avec la methode GetLocation de l'objet Location).
Mais je voudrais faire l'inverse; à partir d'un objet de la carte (par exemple un pushpin) donc je ne connais pas les coordonnées (latitude /longitude), je voudrais pouvoir les récupérer par une methode quelconque (comme SetLocation mais elle n'existe pas... enfin je crois)
Merci,

Re : Codage de controle en C++ pour MapPoint le 02/04/2004 22:30:05

ymca2003
il faut calculer soi-même en utilisant la fonction Distance permettant de calculer la distance entre 2 objets pushpin ou location :

(code en C++, mais marche également sous VB)

//************************************************
// LocationToLatLon : calcule la latitude et la longitude d'un objet Location.
// entrée : pLoc : object location dont on souhaite calculer les coordonnées.
// lat : variable où stocker la latitude.
// lon : variable où stocker la longitude.
//************************************************
void CCtrlManager::LocationToLatLon(MapPoint::LocationPtr pLoc, double& lat, double& lon)
{
// calcul de la distance entre le lieu spécifié et le pole nord, cette distance nous permet de calculer la latitude du point
double dist1 =pLoc->DistanceTo(m_pNorth);
lat = 90 * (1 - 2 * dist1 / (M_PI * R_TERRE));

// calcul de la distance entre le lieu spécifié et l'équateur, cette distance nous permet de calculer la longitude du point
double dist2 = pLoc->DistanceTo(m_pEquator);
double cos_alpha = cos(dist2 / R_TERRE) / cos(lat * M_PI / 180);
lon = acos(cos_alpha) * 180 / M_PI;

// calcul de la distance entre le lieu spécifié et l'est et l'ouest
double dist3 = pLoc->DistanceTo(m_pEast);
double dist4 = pLoc->DistanceTo(m_pWest);
if(dist4 < dist3)
lon = -lon;
}

avec :
m_pNorth= m_pMap->GetLocation(90, 0, 0);
m_pEquator= m_pMap->GetLocation(0, 0, 0);
m_pWest= m_pMap->GetLocation(0, -90, 0);
m_pEast= m_pMap->GetLocation(0, 90, 0);

Re : Codage de controle en C++ pour MapPoint le 05/04/2004 08:51:14

gudmundur

Gudmundur ymca2003, désolé pour le délai de mes remerciements, mais merci , merci encore pour cette info.

Re : Codage de controle en C++ pour MapPoint le 24/06/2004 12:20:19

kopeltar
Salut,
je trouve ton code tres interessant, néanmoins ya 2 trucs qui m'échappent
1- R_TERRE est ce que c le rayon de la terre= 6378?
M_PI est ce que c le PI=3.14...?

2- dans ton expression
lon = acos(cos_alpha) * 180 / M_PI;

c koi comme fonction 'acos'?

en espérant un éclaircissement de ta part, car là je suis vraiment bloqué
d'avance merci,



Re : Codage de controle en C++ pour MapPoint le 24/06/2004 13:05:40

ymca2003
R_TERRE : rayon de la terre en km
M_PI : valeur de pi (3.1415926...)

acos c'est l'inverse de la fonction cosinus qu donne l'angle (en radian) à partir de la valeur du cosinus de l'angle.
le *180/M_PI permet de convertir en degré

cette formule est basé sur de la trigonométrie sphérique


[Page 1 Page 2]
Classé sous : controle, codage, mappoint

Participer à cet échange

Pub



Appels d'offres

Plugin Dialer outlook
Budget : 2 000€
Travail graphique- ill...
Budget : 1 000€
creation de marque et ...
Budget : 1 000€

CalendriCode

Juillet 2008
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Téléchargements

Logiciels à télécharger sur le même thème :

Boutique

Boutique de goodies CodeS-SourceS