|
| Marqueur sur carte Google MAPS |
| Iniciado por amis31.etudes, 22,sep. 2014 13:40 - 17 respuestas |
| |
| | | |
|
| |
| Publicado el 22,septiembre 2014 - 13:40 |
Bonjour,
Je souhaiterai afficher au clic sur une carte google maps un marqueur afin de pouvoir dessiner une zone par la suite. Comme le propose ce site justement : http://www.acme.com/planimeter/ J'aimerai l'afficher dans une fenĂŞtre windev avec un ActiveX comme l'exemple EasyGoogleMapsAPI V6.2 Google Maps du site de depot : http://depot.pcsoft.fr/resource.awp… Je dĂ©bute avec les API et windev donc mes connaissances d'utilisation sont faibles sur ça.
J'aimerai ne pas rafraichir la carte quand je place un marqueur dessus
Si des personnes ont des tuyaux, merci d'avance. |
| |
| |
| | | |
|
| | |
| |
| Publicado el 22,septiembre 2014 - 16:23 |
Bonjour,
Dans les exemples livrés avec Windev, il y a un exemple qui se rapproche de ton besoin. Voir WdMapStatique dans les exemples. Ou voir la fonction GglRecupereCarte.
Mais restriction importante : Cet exemple fonctionne avec un champ image, et pas un champ activeX. Et donc, en particulier, les fonctionnalités disponibles sont celles intégrées par PC-Soft, et pas toutes les fonctionnalités natives de Google.
Malgré cette restriction, on peut ajouter des marqueurs sur la carte, relier les marqueurs entre eux , zoomer et faire différentes choses sympathiques. Maximum 99 marqueurs sur une carte. |
| |
| |
| | | |
|
| | |
| |
| Publicado el 22,septiembre 2014 - 17:02 |
Merci Joel de ta réponse mais je souhaite opter pour une carte Dynamique ... donc les fonction ggl ne me serviront pas. j'ai effectivement vu l'exemple MapStatique.. c'est dommage que ce soit qu'une image! Merci quand même |
| |
| |
| | | |
|
| | |
| |
| Publicado el 23,septiembre 2014 - 09:01 |
J'ai résolu mon problème. Mais maintenant je chercherai à récupérer la latitude et la longitude du marqueur cliqué sur la carte. J'arrive à le récupérer dans le code Javascript, mais comment l'affecter à une variable Windev ?
Merci d'avance |
| |
| |
| | | |
|
| | |
| |
Miembro registrado 962 mensajes |
|
| Publicado el 24,septiembre 2014 - 02:43 |
hello, voici un bout de code expérimental qui fait ceci :
Utilisation Activex Microsoft Web Browser (AX_Carte) pour afficher une carte google map Création de marqueur bleu par shift click Effacement de marqueur par ctrl click Déplacement des marqueurs possibles Affichage des coordonnées des marqueurs sur création ou fin de déplacement dans la fenêtre trace L astuce consiste à changer le titre du document html avec les coordonnées du marqueur ceci déclenche un événement activeX utilisable dans windev La carte est centrée sur la bonne ville de Bergues (bienvenue chez les chtis) . A Faire : gestion de zone
laCarte est une chaîne = [ <html lang="fr"> <head> <meta name="viewport" content="initial-scale=1.0, user-scalable=no"/> <meta charset="UTF-8" /> <title>Bienvenue chez les chtis</title> <style type="text/css"> html { height: 100% } body { height: 100%; margin: 0; padding: 0 } #EmplacementDeMaCarte { height: 100% } </style> <script type="text/javascript" src="http://maps.googleapis.com/maps/api/js?sensor=false"></script> <script type="text/javascript"> //Variables globales var global = this; //icones des marqueurs var redpin = "http://maps.google.com/mapfiles/ms/icons/red-pushpin.png"; var bluepin = "http://maps.google.com/mapfiles/ms/icons/blue-pushpin.png"; //tableau contenant tous les marqueurs que nous créerons var tabMarqueurs = new Array(); var MarqueursPaths = new Array(); var MaZone; var MaCarte;
function initialisation(){ var centreCarte = new google.maps.LatLng(50.966667, 2.433333); var optionsCarte = { zoom: 9, center: centreCarte, mapTypeId: google.maps.MapTypeId.ROADMAP }; maCarte = new google.maps.Map(document.getElementById("EmplacementDeMaCarte"), optionsCarte); //tableau contenant tous les marqueurs que nous créerons tabMarqueurs = new Array(); MarqueursPaths = new Array();
maZone = new google.maps.Polygon({ strokeColor: "#0F00F0",//couleur des bords du polygone strokeOpacity: 0.8,//opacité des bords du polygone strokeWeight: 2,//épaisseur des bords du polygone fillColor: "#0F00F0",//couleur de remplissage du polygone fillOpacity: 0.35////opacité de remplissage du polygone });
//notez la présence de l'argument "event" entre les parenthèses de "function()" google.maps.event.addListener(maCarte, 'click', function(event) { if (global.shiftKey) { addMarker(event.latLng); } }); }
function addMarker(point) { var marker = new google.maps.Marker({ position: point,//coordonnée de la position du clic sur la carte map: maCarte,//la carte sur laquelle le marqueur doit être affiché icon: bluepin, // zIndex: 1, title: "marqueur", draggable:true }); tabMarqueurs.push(marker); MarqueursPaths.push(point); //maZone.setPaths(MarqueursPaths); //maZone.setMap(maCarte); //changement de titre pour déclencher un événement ActiveX document.title =point; google.maps.event.addListener(marker,'dragstart',function(){ //Add drag start event marker.setIcon(redpin); }); google.maps.event.addListener(marker,'drag',function(){ }); //Add drag event google.maps.event.addListener(marker,'dragend',function(event){ //Add drag end event marker.setIcon(bluepin); //changement de titre pour déclencher un événement ActiveX document.title =event.latLng; }); google.maps.event.addListener(marker,'click',function(point) { //Add Ctrl+Click event to remove marker if (global.ctrlKey) { marker.setMap(null); } }); }
//////////////////[ Key down event handler ]
var EventUtil = { addHandler: FUNCTION(element, type, handler){ IF (element.addEventListener){ element.addEventListener(type, handler, False); } ELSE IF (element.attachEvent){ element.attachEvent("on" + type, handler); } ELSE { element["on" + type] = handler; } } };
EventUtil.addHandler(document, "keydown", FUNCTION(Event){keyDownHandler(Event)}); EventUtil.addHandler(document, "keyup", FUNCTION(Event){keyUpHandler(Event)});
FUNCTION keyDownHandler(e) { IF (!e) var e = window.event; var target = (!e.target) ? e.srcElement : e.target; IF (e.keyCode == 16 && !GLOBAL.shiftKey) { GLOBAL.shiftKey = True; } IF (e.keyCode == 17 && !GLOBAL.ctrlKey) { GLOBAL.ctrlKey = True; } }
FUNCTION keyUpHandler(e){ IF (!e) var e = window.event; IF (e.keyCode == 16 && GLOBAL.shiftKey) { GLOBAL.shiftKey = False; } IF (e.keyCode == 17 && GLOBAL.ctrlKey) { GLOBAL.ctrlKey = False; } }
google.maps.event.addDomListener(window, 'load', initialisation)
</script> </head> <body> <div id="EmplacementDeMaCarte"></div> <noscript> <p>Attention : </p> </noscript> </body> </html> ]
fCrée(fRepEnCours()+"\lacarte.html") nIDFichier est un entier
nIDFichier = fOuvre(fRepEnCours()+"\lacarte.html", foEcriture) SI nIDFichier <> -1 ALORS
fEcrit(nIDFichier,laCarte)
fFerme(nIDFichier) SINON Erreur("Erreur sur fichier lacarte.html" ) FIN ActiveXEvénement(ChangementTitre ,AX_Carte ,"TitleChange") AX_Carte>>navigate2(fRepEnCours()+"\lacarte.html")
avec la procédure changement de titre :
Procedure ChangementTitre(letexte) Trace(letexte)
-- Ami calmant, J.P |
| |
| |
| | | |
|
| | |
| |
| Publicado el 24,septiembre 2014 - 10:55 |
Merci Jp pour ton Code !
Je l'ai essayé mais j'ai une erreur qui viens certainement de :
//Event handler class to attach events var EventUtil = { addHandler: FUNCTION(element, type, handler){ IF (element.addEventListener){ element.addEventListener(type, handler, False); } ELSE IF (element.attachEvent){ element.attachEvent("on" + type, handler); } ELSE { element["on" + type] = handler; } } };
// Attach Key down/up events to document EventUtil.addHandler(document, "keydown", FUNCTION(Event){keyDownHandler(Event)}); EventUtil.addHandler(document, "keyup", FUNCTION(Event){keyUpHandler(Event)});
//Checks for shift and Ctrl key press FUNCTION keyDownHandler(e) { IF (!e) var e = window.event; var target = (!e.target) ? e.srcElement : e.target; IF (e.keyCode == 16 && !GLOBAL.shiftKey) { //Shift Key GLOBAL.shiftKey = True; } IF (e.keyCode == 17 && !GLOBAL.ctrlKey) { //Ctrl Key GLOBAL.ctrlKey = True; } }
//Checks for shift and Ctrl key release FUNCTION keyUpHandler(e){ IF (!e) var e = window.event; IF (e.keyCode == 16 && GLOBAL.shiftKey) { //Shift Key GLOBAL.shiftKey = False; } IF (e.keyCode == 17 && GLOBAL.ctrlKey) { //Ctrl Key GLOBAL.ctrlKey = False; } }
voici l'erreur :
"Une erreur est survenue dans le script de cette page. Ligne : 95 Caractère : 45 Erreur : "}" attendu ... "
car si je met cette partie en commentaire, ça m'affiche bien une simple carte.
ai-je oublié un détail? Merci d'avance. |
| |
| |
| | | |
|
| | |
| |
Miembro registrado 962 mensajes |
|
| Publicado el 24,septiembre 2014 - 11:17 |
Peux-tu me dire ce que tu as aux alentours de la ligne 95 dans le fichier lacarte.html ? (quand il y a l'erreur )
-- Ami calmant, J.P |
| |
| |
| | | |
|
| | |
| |
| Publicado el 24,septiembre 2014 - 11:25 |
A la ligne 95 j'ai : addHandler: FUNCTION(element, type, handler){
( pour info, je n'ai pas modifié ton code, c'est exactement le même) |
| |
| |
| | | |
|
| | |
| |
| Publicado el 24,septiembre 2014 - 11:36 |
A la ligne 95 j'ai : addHandler: FUNCTION(element, type, handler){ (via Notepad)
(J'utilise exactement le mĂŞme code que ton exemple) |
| |
| |
| | | |
|
| | |
| |
Miembro registrado 962 mensajes |
|
| Publicado el 24,septiembre 2014 - 11:49 |
où je suis actuellement je ne peux pas essayer d'utiliser le code copié dans le forum ( dès fois qu'il y aurait eu des caractères parasites dans le copier coller de windev dans le forum). Où alors c'est une erreur javascript dépendante de la version d'internet explorer utilisée. Quelle version d' IE as-tu ? Essaie d'ouvrir le fichier lacarte.html avec les navigateurs dont tu disposes.
-- Ami calmant, J.P |
| |
| |
| | | |
|
| | |
| |
| Publicado el 24,septiembre 2014 - 12:01 |
J'ai essayé avec mes différents navigateur .. je n'ai rien qui s'affiche.
Verion IE : 11 Version Firefox : 32.0.2
je vérifie mais il n'y a pas l'air d'avoir de caractères parasites.. |
| |
| |
| | | |
|
| | |
| |
Miembro registrado 962 mensajes |
|
| Publicado el 24,septiembre 2014 - 12:55 |
Effectivement il y a un souci de syntaxe dans cette partie, essaie ceci :
//////////////////[ Key down event handler ]///////////////////// //Event handler class to attach events var EventUtil = { addHandler: function(element, type, handler){ if (element.addEventListener){ element.addEventListener(type, handler, False); } else if (element.attachEvent){ element.attachEvent("on" + type, handler); } else { element["on" + type] = handler; } } };
// Attach Key down/up events to document EventUtil.addHandler(document, "keydown", function(event){keyDownHandler(event)}); EventUtil.addHandler(document, "keyup", function(event){keyUpHandler(event)});
//Checks for shift and Ctrl key press function keyDownHandler(e) { if (!e) var e = window.event; var target = (!e.target) ? e.srcElement : e.target; if (e.keyCode == 16 && !global.shiftKey) { //Shift Key global.shiftKey = True; } if (e.keyCode == 17 && !global.ctrlKey) { //Ctrl Key global.ctrlKey = True; } } //Checks for shift and Ctrl key release function keyUpHandler(e){ if (!e) var e = window.event; if (e.keyCode == 16 && global.shiftKey) { //Shift Key global.shiftKey = False; } if (e.keyCode == 17 && global.ctrlKey) { //Ctrl Key global.ctrlKey = False; } }
-- Ami calmant, J.P |
| |
| |
| | | |
|
| | |
| |
| Publicado el 24,septiembre 2014 - 13:00 |
Effectivement ça corrige le problème.
Quand j'ai cliqué pour ajouter un marqueur j'ai eu une erreur : "True est indéfini" J'ai rajouter une simple cote dans le code 'true' et ça fonctionne.
Merci pour ses informations, c’est exactement ce que je souhaiter faire. |
| |
| |
| | | |
|
| | |
| |
Miembro registrado 962 mensajes |
|
| Publicado el 24,septiembre 2014 - 13:02 |
Arf ça ne marche toujours pas , cela doit être le formateur de texte du forum qui pose problème. Je vais coller le code brut :
//////////////////[ Key down event handler ]///////////////////// //Event handler class to attach events var EventUtil = { addHandler: function(element, type, handler){ if (element.addEventListener){ element.addEventListener(type, handler, false); } else if (element.attachEvent){ element.attachEvent("on" + type, handler); } else { element["on" + type] = handler; } } };
// Attach Key down/up events to document EventUtil.addHandler(document, "keydown", function(event){keyDownHandler(event)}); EventUtil.addHandler(document, "keyup", function(event){keyUpHandler(event)});
//Checks for shift and Ctrl key press function keyDownHandler(e) { if (!e) var e = window.event; var target = (!e.target) ? e.srcElement : e.target; if (e.keyCode == 16 && !global.shiftKey) { //Shift Key global.shiftKey = true; } if (e.keyCode == 17 && !global.ctrlKey) { //Ctrl Key global.ctrlKey = true; } } //Checks for shift and Ctrl key release function keyUpHandler(e){ if (!e) var e = window.event; if (e.keyCode == 16 && global.shiftKey) { //Shift Key global.shiftKey = false; } if (e.keyCode == 17 && global.ctrlKey) { //Ctrl Key global.ctrlKey = false; } }
-- Ami calmant, J.P |
| |
| |
| | | |
|
| | |
| |
| Publicado el 24,septiembre 2014 - 13:41 |
Trés bien ! Merci !!
Par ailleurs j'aurais une autre question.. Peut on effacer le marquage d'une zone dessiner (Polygon) sans avoir à recharger la carte..? Disons qu'un bouton déclencherai l'action, c'est à dire au click du bouton, on efface la zone dessiner avec tous les marqueurs.
Je vousdrais savoir si c'est possible en prenant l'idée d'une suppression d'un marker ( pas besoin de recharger la page dans ce cas)
Merci d'avance. Désolé je ne connais pas trés bien Javascript |
| |
| |
| | | |
|
| | |
| |
| Publicado el 24,septiembre 2014 - 14:30 |
Dans votre code , il faut cliker sur shift pour pouvoir inserer un marqueur ou plusieurs ( on appuie une seul fois sur shift et aprés on peut placer un nombre x de marqueur) mais comment revenir au clic sans action! c'est a dire que l'orsqu'on clic sur la carte ça n'affiche pas de marqueur... ? je pensais qu'il fallait rester appuyer sur shit pour placer un marqueur mais ce n'est pas le cas Merci d'avance.. |
| |
| |
| | | |
|
| | |
| |
Miembro registrado 962 mensajes |
|
| Publicado el 24,septiembre 2014 - 14:31 |
houla , ça c'est plus difficile et je ne suis pas spécialiste javascript
-- Ami calmant, J.P |
| |
| |
| | | |
|
| | |
| |
Miembro registrado 6 mensajes |
|
| Publicado el 12,mayo 2020 - 19:20 |
Bonjour,
J'ai essayé de joindre l'auteur du composant EasyGoogleMapsAPI plusieurs fois mais toujours pas de réponse de sa part malgré un achat en 2013. (pas très cool...) 
Je m'adresse donc à tous ceux qui ont réussi à faire fonctionner ce composant (au moins avec l'exemple fourni sur le site de dépôt) depuis la nouvelle politique de Google survenue je crois le 16 Août 2019.
En effet, depuis cette date, la carte apparaĂ®t en mode grisĂ© avec la mention "For devlopement purproses only" en fond de toile. J'ai beau appliquer les mesures demandĂ© sur le lien qui apparaĂ®t, rien n'y fait. https://developers.google.com/maps/documentation/javascript/error-messages…
Je compte un peu sur vous pour m’éclairer sur le sujet car je n’ai trouvé aucune réponse sur le net qui évoque la solution à ce problème. Par exemple en terme de programmation, que faut-il apporter au projet exemple "Ligue 1" pour qu'il fonctionne correctement ? Quelles sont les API qu'il faut intégré au projet depuis le compte Google ?
Merci pour vos suggestions. |
| |
| |
| | | |
|
| | | | |
| | |
|