Excellent, ca va me permettre d'adapter mon code!
Merci encore !
Excellent, ca va me permettre d'adapter mon code!
Merci encore !
Petite question Philippe:
Si je veux extraire l'information XML de Google..
..avec ".selectSingleNode", comment je peux spécifier le TYPE recherché?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 <address_component> <long_name>Montréal</long_name> <short_name>Montréal</short_name> <type>administrative_area_level_2</type>
Étant donné que la plupart des résultats possèdent les atrributs:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 'Commune ... Val(.selectSingleNode("//address_component//long_name").Text)
Merci à l'avance,
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 <address_component> <long_name></long_name>
Jonathan
bonjour,
une solution consiste à utiliser une expression XPath pour rechercher l'information (référence ici) :
bonne continuation,
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 If Not .selectSingleNode("//address_component[type = 'administrative_area_level_2']") Is Nothing Then Debug.Print .selectSingleNode("//address_component[type = 'administrative_area_level_2']/long_name").Text End If
Philippe
Bonjour,
Quelqu'un pourrait me dire comment faire pour mettre ce projet en place ??
Existe-t-il une base exemple en téléchargement ?
Quelqu'un pourrait mettre une base exemple ici ?
Merci de vos réponses, à bientôt Jean-Yves
Je suis partant aussi pour avoir une base exemple.
Je cherche à pouvoir visualiser sur une carte google un ensemble d'adresse en fonction d'un sous-ensemble choisi.
Exemple : Dans ma catégorie 1, j'ai 15 adresses, dans ma catégorie 2, j'ai 27 adresses,...
Si je choisis la catégorie 1, je peux voir sur la carte où sont situées les 15 adresses, idem si je choisis la catégorie 2.
Et si je choisis les 2 catégories, je vois donc les 42 adresses sur la carte.
Merci par avance.
bonjour,
Vous trouverez ici une petite base exemple au format .mdb:
Quelques images :
- En double-cliquant sur une catégorie, on affiche tous les points de cette catégorie.
- En double-cliquant sur un nom, on affiche le point correspondant.
- Attention : Base créée avec Access 2010, vérifier les références VBA en cas de problème...
Bonne continuation
Philippe
Salut,
Y-a pas à dire "ça en jette" comme on dit
Super sympa. . Ca me trotte dans la tête depuis un bout de temps.
Le géocodage envahit tout et je crois que je vais m'y mettre. Avec tous ces exemples je devrais m'en sortir.
Merci.
Ça y est, j'ai intégré le code de philben à ma base de donnée. Je n'ai pas résisté longtemps de jouer avec. Ma base a environ 2300 adresses dans le monde entier.
Quelques remarques suite à mon utilisation:
- Pour qu'il s'y retrouve avec les DOM j'ai substitué le nom du pays par le nom du département DOM:
- Il n'y a plus d'erreur farfelue lorsque l'on précise le nom du département. En effet le géocodage ne semble pas très sensible au code postal. Google peut donc géocoder en dehors du département sur un lieu-dit de l'adresse.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 sPays = IIf(!DEPARTEMENT >= 96, OteAccents(!Nom_Departement), !LIBCOG) 'correctif DOM-TOM sDep = IIf(!DEPARTEMENT >= 96, "", OteAccents(!Nom_Departement)) 'correctif DOM-TOM tGeo = PostalToGeoViaGM(OteAccents(!ADRESSE), OteAccents(!CP), OteAccents(!VILLE), sDep, sPays)
- Suppression des caractères dans l'adresse qui le rend inefficace (pas encore implémenté) ou qui génère des erreurs comme: ° " . , & - etc.. Par exemple avec le tiret dans l'adresse, le géocodage a situé le POI aux US alors que sans le tiret le POI était en France. Remarque c'était avant que je ne précise le nom du département lors des géocodage. Je n'ai pas fait d'essai tiret dans l'adresse et nom du département.
- Suppression de caractères spéciaux dans pour le libellé d'un POI sur la carte: VbCr etc...
- J'ai modifié pour que si le statut du géocodage est ZERO_RESULTS alors il fait un géocodage sans l'adresse puis sans le code postal puis sans la ville. Je stocke dans un champ le niveau de recherche qui a permis le géocodage.
Par la suite je vais agrémenter les POI de quelques infos supplémentaires (No Tel,...). Sans doute export pour TomTom. Changer la couleur suivant la précision du géocodage et/ou le niveau de recherche qu'il a fallut pour géocoder.
Et je vais jeter un oeuil à l'API v3 de google.
ronpub,
merci de nous avoir fait part de ton expérience sur le géocodage
amicalement,
philippe
Merci beaucoup Philben de nous faire découvrir la géolocasation.
Comme dit p^lus haut ça en jette et on peut en faire des applications utiles.
Une question : peut-on afficher la carte avec un zoom défini à l'ouverture ?
(typiquement pour afficher des chantiers sur un département, par exemple) au lieu de toute la France
encore
En ce qui concerne le zoom, je peux répondre partiellement.
J'ai débuté un nouveau fichier html pour l'API v3 de google qui diffère donc de celui de philben. Cf PJ. Je fais du javascript tout les 3-4 ans et en toute petite quantité donc j'oublie tout entre temps.
Ce qui diffère:
- je ne maitrise pas encore l'effacage des Overlays donc je ne l'ai pas intégré (mis en commentaire).
- Ca met des puces jaunes pour l'instant car je vais ajouter la couleur comme parametre. Mais on peut en changer en changeant le codage RVB à la fin de la ligne 13
- Ce code créé et étend un "bound" (limite) à tout les "marker" affichés. Il faut ensuite appeller fitMarkers() une fois que l'on a afficher toutes les marques par displayMark(lat,lon,msg). Si on modifie l'affichage (fitBounds) à chaque displayMark, cela ralentie considérablement les performances (testé avec des centaines de marques - ca n'a pas utilisable mais ca donne une vision d'ensemble). Pour appeller displayMark il faut modifier le code de la fonction du formulaire Carte Afficher(ByVal strSQL As String):
et ajouter la fonction suivante dans le formulaire carte:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 With oRs If Not .EOF Then Do Until .EOF 'Affiche le point sur la carte displayPoint !cLatitude, !cLongitude, _ Replace(Nz(!Contact), Chr(34), "'") & " / " & !VILLE .MoveNext Loop fitMarkers 'ajout de la fonction pour zoom ajusté Afficher = True End If .Close End With
Il suffira de remplacer le fichier Geocodage.html par Geocodage3.html joint.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 'Ajuste la taille de la carte Private Sub fitMarkers() Me.WebBrowser.Object.Document.parentWindow.execScript "fitMarkers()", "JScript" End Sub
Nouvelle version du fichier html. Cette fois-ci j'ai implémenter la fonction clearMap().
Par j'ai un gros doute pour la réinitialisation de mon LatLngBounds. Je n'ai pas trouvé de méthode réinitialisant l'object, j'en ai donc fait en autre dans la fonction clearMap():
Ça fonctionne mais est-ce correct? Quelqu'un s'y connait en javascipt?
Code : Sélectionner tout - Visualiser dans une fenêtre à part oBounds = new google.maps.LatLngBounds();
Prochaine étape les clusters de Marker ensuite les couleurs. Enfin bon si j'ai le temps car ça n'est pas du tout une priorité. Et dire que je me penche là dessus alors que j'ai des projets sérieusement en retard...
Bon, j'ai ajouté les clusters dans le fichier html. Cf image de l'Allemagne.
Ça fonctionne mais je ne suis pas du tout sure de la gestions des objets. De leur effacement et de leur initialisation. Je n'y connais pas grand chose et je crains que le code soit pourri.
Merci Ronpub
Tu réponds bien à ma question et déjà ça marche (en adaptant légèrement ton code pour l'original de Philben (!cLatitude pour !seLatitude ... )
Reste à déterminer pourquoi il y a des ronds bleus au lieu d'étiquette jaunes pour certains points ...
Bref je vais aussi regarder cela de mon côté ... mais c'est super !
Les ronds bleus, c'est la mise en cluster des markers lorsqu'ils sont trop proches les uns des autres:
http://code.google.com/intl/fr/apis/...mogallery.html
exemple " Too Many Markers "
Tu peux enlever cette fonction en mettant en commentaire la ligne 56 du fichier html du post #34 :
//vmarkerCluster = new MarkerClusterer(oMap, oMarkersArray, omcOptions);
bonjour,
j'ai modifié ici le code de la page html pour passer en API v3 de GM + quelques corrections dans le code VBA.
Quelques remarques :
ronpub, micniv
- Base Access recompilée avec Access 2003
- Plus d'affichage d'InfoWindow en cliquant sur un marqueur mais seulement d'une info bulle en passant la souris sur le marqueur
- Pour info, l'en-tête du fichier html contient la ligne
<!-- saved from url=(0016)http://localhost -->
qui permet de passer la sécurité d'Access 2010 sinon rien ne s'affiche !- Viewport ajuster automatiquement selon la position des marqueurs
- On a droit à 2500 géocodages/j avec la v3, voir <Usage Limits>
merci de votre participation active. La discussion, certe intéressante, dévie vers l'utilisation de tierce-parties javascript qui a plus sa place dans le forum correspondant.
Cordialement,
Philippe
Une information pour ceux qui utilisent Access 2000 et antérieur, l'activeX du navigateur n'est pas redimensionable à postériori. Il faut le définir à la taille désirée à son insertion dans le formulaire:
http://support.microsoft.com/kb/161397
Ainsi j'ai effacé et réinséré le contrôle "Microsoft Web Browser" à la dimension souhaitée (approximativement 7cm x 3cm par défaut c'est petit) et je l'ai nommé "WebBrowser". C'est tout de même mieux pour les postes qui tournent avec Access 2000.
Bonjour ronpub,
Avec Access 2000, le web control est redimensionnable si on le place dans un control form2-frame.
Voir la discussion .
bonne continuation,
Philippe
Bonjour Philben
bravo pour ton appli;
mais j'aimerais savoir si une fonction inverse à PostalToGeoViaGM est faisable
(trouver l'adresse à partir des latitude et longitude).
Je n'arrive pas à trouver le code malgré pas mal de recherche.
merci pour la reponse
jmaulin
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager