PC SOFT

FOROS PROFESIONALES
WINDEVWEBDEV y WINDEV Mobile

Inicio → WINDEV 2025 → Intégrer des .kml dans le champ carte
Intégrer des .kml dans le champ carte
Iniciado por dsabderrahim, 15,sep. 2017 23:32 - 5 respuestas
Publicado el 15,septiembre 2017 - 23:32
Bonjour

Comment peut-on afficher les informations d'un fichier KML dans un champ carte de WinDev on utilisant les fonctionnalités de Maps JavaScript API v3.


Saidi
Miembro registrado
11 mensajes
Publicado el 18,septiembre 2017 - 10:56
Bonjour Saidi,

Il faut que tu interprète ton kml par une lecture xml (le kml est au format xml), puis que tu génère un polygone par les fonction maps avec les différents points que tu auras lu dans ton fichier kml.

Pour la lecture du kml ça donne quelque chose comme :

codexml1 est une chaîne
// fchargeTexte charge le contenu du fichier xml dans une variable chaîne.
codexml1 = fChargeTexte(sCheminPolygone)

// création d'un document au format XML
// XMLDOCUMENT permet de créer ou de manipuler un fichier XML.
SI XMLDocument("docxml",codexml1)=Faux ALORS
Erreur("Impossible de charger le document XML",ErreurInfo())
RENVOYER ""
FIN

// La fonction xmlrecherche permet de faire une recherche d'éléments ou de types d'éléments dans le fichier XML
// En recherchant la valeur null et en demandant tous les éléments, on fait une recherche de tout
// les éléments du document.
XMLRecherche("docxml","coordinates",XMLBalise)
TANTQUE XMLTrouve("docxml")
SI XMLDonnée("docxml") <> "" ALORS
sUnParcours1 est une chaîne = XMLDonnée("docxml")
sUnPoint1 est une chaîne
POUR TOUTE CHAÎNE sUnPoint1 DE sUnParcours1 SEPAREE PAR " "
xLong1 est un numérique = ExtraitChaîne(sUnPoint1,1,",")
xLat1 est un numérique = ExtraitChaîne(sUnPoint1,2,",")
SI gxLatPremier = 0 ALORS
gxLatPremier = xLat1
FIN
SI gxLongPremier = 0 ALORS
gxLongPremier = xLong1
FIN
SI xLong1 <> 0 ET xLat1 <> 0 ALORS
SI sPolygone <> "" ALORS
sPolygone += ","
FIN
sPolygone += "{lat: " + xLat1 + ", lng: " + xLong1 + "}"
FIN
FIN
// on ajoute la valeur se trouvant à l'intérieur d'une balise
FIN
XMLSuivant("docxml")
FIN
XMLTermine("docxml")

Bon Dev !
Damien D.
Publicado el 19,septiembre 2017 - 01:21
La lecture du fichier kml est une alternative certes mais la cate google maps à déjà une propriété spécifique pour affiché toutes les infos contenu dans un kml et plus voici le code en javascripte qui réponds exactement à ce que je cherche :

<script>
var map;
var src = 'https://developers.google.com/maps/documentation/javascript/examples/kml/westcampus.kml';

function initMap() {
map = new google.maps.Map(document.getElementById('map'), {
center: new google.maps.LatLng(-19.257753, 146.823688),
zoom: 2,
mapTypeId: 'terrain'
});

var kmlLayer = new google.maps.KmlLayer(src, {
suppressInfoWindows: true,
preserveViewport: false,
map: map
});
}
</script>

Comment faire ça avec Windev
Merci
Miembro registrado
2.682 mensajes
Publicado el 20,septiembre 2017 - 05:29
Bonjour,

Pour faire cela avec Windev, à la place du champ carte, il te faut utiliser un champ web pour afficher la carte. Je en vos pas d'autres solutions.

--
Cordialement,

Philippe SAINT-BERTIN
Géode Informatique
Publicado el 23,septiembre 2017 - 15:42
Bonjour tout le monde

Tout d'abord merci a vous Damien et Philippe pour vous réponse en effet après une rechercher approfondie j'ai trouve une fonction miracle qui résoudre presque tous le Pb du champs carte

il intégré le fichier kml en une seul ligne de code


CarteExécuteJS()

Merci encore a vous
Publicado el 19,julio 2019 - 20:29
Bonjour Saidi,
J'essaie de reproduire ce que tu aurais réussi, mais en vain.
J'ai un fichier toto.kml
Dans une fenêtre, j'ai un bouton pour ouvrir une nouvelle fenêtre affichant ma Google Map.

MonImage = GglRécupèreCarte("ma_cle_API", xMa_Lat, xMa_lon,nZoom,nLargeur_Ecran,nHauteur_Ecran,gglSatellite)

soit sCode = [
//ton code JS que j'ai Copier/Coller
]

CarteExécuteJS(CARTE_Carte, sCode)
FEN_Carte.CARTE_Carte = MonImage


Ma nouvelle fenêtre s'ouvre avec Google Map, mais sans prendre en compte mon fichier toto.kml

Aurais-je raté quelque chose ?
Merci pour ton retour, et bonne soirée