|
| Inicio → WINDEV 2025 → [WD24] Récupération de données d'une carte Google Map API via champ ActiveX |
| [WD24] Récupération de données d'une carte Google Map API via champ ActiveX |
| Iniciado por Maxime D, 04,abr. 2019 16:07 - 6 respuestas |
| |
| | | |
|
| |
Miembro registrado 48 mensajes |
|
| Publicado el 04,abril 2019 - 16:07 |
Bonjour, je cherche depuis une bonne journée déjà comment faire pour récupérer une certaine valeur d'une carte Google Map API.
Je vous explique, j'utilise un champ ActiveX de type Microsoft Web Browser afin de lire un fichier HTML qui contient tout le code HTML et JavaScript qui a pour but d'afficher la carte Google. Sur cette carte je dois afficher plusieurs milliers de polygones différents et chaque polygone possède un certain nombre d'informations.
Ce code HTML / JavaScript est généré à chaque fois que l'utilisateur spécifie ce qu'il recherche dans différents champs combo, j'ai donc affecté à chacun de ces polygones un identifiant unique (que l'on peut récupérer lorsque l'on clique sur chaque polygone) puisque je ne peux pas me permettre d'augmenter encore plus la taille du fichier étant donné que lorsque toutes les parcelles sont affichés cela prend déjà près d'une vingtaine de seconde à tout générer.
Je souhaite donc savoir comment faire pour retourner cette valeur à WinDev, me permettant ainsi d'ouvrir une nouvelle carte avec uniquement la parcelle sélectionnée mais cette fois ci avec toutes ses informations.
Voici un morceau du code qui me permet d'afficher ma carte
maCarte ="<html>" maCarte+="<head>" maCarte+="<meta name='viewport' content='initial-scale=1.0, user-scalable=no'>" maCarte+="<meta charset='utf-8'>" maCarte+="<title>Simple Polygon</title>" maCarte+="<style>" maCarte+="#map {" maCarte+="height: 680px;" maCarte+="}" maCarte+="html, body {" maCarte+="height: 100%;" maCarte+="margin: 0;" maCarte+="padding: 0;" maCarte+="}" maCarte+="</style>" maCarte+="</head>" maCarte+="<body>" maCarte+="<div id='map'></div>" maCarte+="<script>" maCarte+="function initMap() {" maCarte+="var map = new google.maps.Map(document.getElementById('map'), {" maCarte+="zoom: 18," maCarte+="center: {lat: 42.88281383279, lng: 2.898677443496}," maCarte+="mapTypeId: 'terrain'" maCarte+="});"
maCarte+="var infowindow = new google.maps.InfoWindow({" maCarte+="size: new google.maps.Size(150, 50)" maCarte+="});"
maCarte+="google.maps.event.addListener(map, 'click', function() {" maCarte+="infowindow.close();" maCarte+="});"
POUR i = 1 À 4000 Q_SelectionCoordEtParcelle.ParamIDParcelle = i HExécuteRequête(Q_SelectionCoordEtParcelle) HLitPremier(Q_SelectionCoordEtParcelle) POUR j = 1 À 4 SI Q_SelectionCoordEtParcelle.Latitude <> 0 ALORS SI Q_SelectionCoordEtParcelle.NumeroPolygone = j ALORS maCarte+= "var C" + i + " = [" POUR TOUT Q_SelectionCoordEtParcelle AVEC Q_SelectionCoordEtParcelle.NumeroPolygone = j maCarte+="{lat: " + Q_SelectionCoordEtParcelle.Latitude + ", lng: " + Q_SelectionCoordEtParcelle.Longitude + "}," FIN maCarte = Gauche(maCarte,Taille(maCarte)-1) maCarte+="];" maCarte+="var P" + i + " = new google.maps.Polygon({" maCarte+="paths: C" + i + "," maCarte+="strokeColor: '#FF0000," maCarte+="strokeOpacity: 0.8," maCarte+="strokeWeight: 2," maCarte+="fillColor: '#FFFF00," maCarte+="fillOpacity: 0.35" maCarte+="});" maCarte+="google.maps.event.addListener(P"+i+", 'click', function(event) {" maCarte+="var contentString = '"+ IDENTIFIANT_A_RENVOYER +"' ;" maCarte+="infowindow.setContent(contentString);" maCarte+="infowindow.setPosition(event.latLng);" maCarte+="infowindow.open(map);" maCarte+="});" maCarte+="P" + i + ".setMap(map);" FIN SINON SORTIR FIN FIN FIN maCarte+="}" maCarte+="</script>" maCarte+="<script async defer" maCarte+=" src='https://maps.googleapis.com/maps/api/js?key=MA_CLE_API&libraries=drawing&callback=initMap'>" maCarte+="</script>" maCarte+="</body>" maCarte+="</html>"
fCrée(fRepEnCours()+"\carte.html") nIDFichier est un entier
nIDFichier = fOuvre(fRepEnCours()+"\carte.html",foEcriture) SI nIDFichier <> -1 ALORS fEcrit(nIDFichier,maCarte) fFerme(nIDFichier) SINON Erreur() FIN
AX_carte>>navigate(fRepEnCours()+"\carte.html")
Merci d'avance de vos réponses.
Maxime DMensaje modificado, 04,abril 2019 - 16:33 |
| |
| |
| | | |
|
| | |
| |
Miembro registrado 2.682 mensajes |
|
| Publicado el 04,abril 2019 - 16:39 |
Bonjour,
Si tu utilises Google maps, pourquoi ne pas utiliser le champ carte et la fonction RécupèreObjetJS ?
-- Cordialement,
Philippe SAINT-BERTIN |
| |
| |
| | | |
|
| | |
| |
Miembro registrado 48 mensajes |
|
| Publicado el 04,abril 2019 - 18:00 |
Je ne crois pas que je peux réaliser mon projet avec le champ carte, sur tout les exemples que j'ai trouvé, pour afficher une carte dynamique il faut passer par un champ activeX qui ouvre le fichier HTML. Du moins si tu trouves un exemple qui dit le contraire, je ne penses pas que cela soit possible. |
| |
| |
| | | |
|
| | |
| |
Miembro registrado 677 mensajes |
|
| Publicado el 04,abril 2019 - 18:20 |
| Philippe : on peut tracer des polygones et les colorier avec un champ carte ? |
| |
| |
| | | |
|
| | |
| |
Miembro registrado 2.682 mensajes |
|
| Publicado el 05,abril 2019 - 07:51 |
@LC: Je n'utilise pas le champ carte car je 'en ai pas l'utilité, mais je dirais qu'à priori oui c'est possible. Regarde cette fonction .ExécuteJS
-- Cordialement,
Philippe SAINT-BERTIN |
| |
| |
| | | |
|
| | |
| |
Miembro registrado 48 mensajes |
|
| Publicado el 05,abril 2019 - 11:34 |
| Bon étant donné que je ne peux pas me permettre de passer des jours sur ce problème, je me contente tout simplement d'écrire les valeurs voulues dans le presse papier, et à chaque clic sur le champ ActiveX, je lis le contenu du presser papier. |
| |
| |
| | | |
|
| | |
| |
Miembro registrado 48 mensajes |
|
| Publicado el 05,abril 2019 - 14:03 |
| Bon étant donné que je ne peux pas me permettre de passer des jours sur ce problème, je me contente tout simplement d'écrire les valeurs voulues dans le presse papier, et à chaque clic sur le champ ActiveX, je lis le contenu du presser papier. |
| |
| |
| | | |
|
| | | | |
| | |
|