Bonjour,
Une nouvelle fois je me tourne vers le forum car je suis complètement bloqué ...
J'ai un code existant encapsulé dans une extension google chrome à laquelle je souhaiterais ajouter 2 améliorations, j'espère trouver ici de l'aide et des conseils.
L'extension agit sur l'url suivante http://zezo.org/mc/chart.pl?.
Voici les fichiers sources qui la compose : Route zezo v2.9.1.zip
L'implémentation de la checkbox 'Local Time' et du bouton '.GPX' sur popup.html donne ceci :
Code HTML : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 <div style="float:left;"> <input type="checkbox" id="localtime"> <label>Local Time</label> </div> <div style="float:right;"> <label>Version</label> <label id="version"></label> </div> <div style="margin:0 auto;text-align: center;"> <input type="button" value=".GPX" onclick="file_gpx()"> </div>
et donne ceci :
# Checkbox 'Local Time':
Passe le temps UTC en temps locale, la fonction je l'ai créé et elle est 100% fonctionnelle pour n'importe quel fuseau horaire, la voici :
la variable dt_utc contient les paramètres date et time extrait du code source et alimente la fonction CltDTZ "Client Date Time timeZone", la mise en oeuvre est pour moi le flou artistique complet.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 var dt_utc = [2018,2,25,0,59]; //CET -> CEST in 1 min //var dt_utc = [2018,2,25,1,0]; //CEST OK //var dt_utc = [2018,9,28,0,59]; //CEST -> CET in 1 min //var dt_utc = [2018,9,28,1,0]; //CET OK function CltDTZ (dt_utc) { var d = new Date(Date.UTC.apply(null, dt_utc)); var o = -d.getTimezoneOffset(), t = Math.abs(o); var s = (o < 0) ? "-" : "+"; var h = Math.trunc(t) / 60; var mh = (h == 0) ? "" : s + h; var m = t % 60; var hm = (m == 0) ? mh : s + h + ':' + m; var Y = d.getFullYear(); var M = ("0"+ (d.getMonth() + 1)).slice(-2); var D = ("0" + d.getDate()).slice(-2); var HH = ("0" + d.getHours()).slice(-2); var MM = ("0" + d.getMinutes()).slice(-2); return Y + "-" + M + "-" + D + " " + HH + ":" + MM + " " + "UTC" + hm; }; document.write (CltDTZ(dt_utc)); //2018-03-25 01:59 UTC+1
# Bouton '.GPX':
Extrait la latitude et longitude des points listés pour créer une route exploitable dans d'autres logiciels de routage ou viewer style google earth
Le but est de comparer les routes issus de différents algorithmes de routage.
Pour ce faire, il me faut récupérer la valeur de la variable scale dans le code source
Via une regex, il me faut extraire les valeurs left et top des points dans le code source :
Cette regex doit faire le travail ( elle fonctionne sur regex101 à vérifier si l'extension google chrome la comprend correctement )
Avec ces 2 formules, je suis en mesure de déterminer la latitude "left" et la longitude "top"
Code : Sélectionner tout - Visualiser dans une fenêtre à part /z-index: 1; left :([0-9]{1,}|[-][0-9]{1,})px; top:([0-9]{1,}|[-][0-9]{1,})px/g
Ici aussi la mise en œuvre est un grand flou artistique ... reste le formatage spécifique pour la création du fichier .gpx
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 lat = 90 - ((value_left + 2)/ scale) lon = if (((value_lon + 2) / scale) <= 180){ var lon = (value_lon + 2) / scale; } else { var lon = ((value_lon + 2) / scale) - 360; }
J'espère que le projet séduira quelques uns d'entre vous et que vous m'aiderez à sortir de cette impasse.
Si vous avez des questions, n'hésitez pas je suis très réactif ( je réponds pas 3 jours après )
Merci d'avance
Cdlt
Romain
Partager