Commit 6f4849de authored by ZettaScript's avatar ZettaScript

Add search

parent c7c42861
# WorldWotMap
WorldWotMap v0.3.0, © 2018 Pascal Engélibert, Licence GNU AGPL v3
WorldWotMap v0.4.0, © 2018 Pascal Engélibert, Licence GNU AGPL v3
Ceci est une carte affichant les comptes Ğ1 et leurs certifications. La carte peut être incomplète, car il est facultatif de renseigner sa position géographique sur Cesium+.
Voir la carte en ligne : https://zettascript.org/tux/g1/worldwotmap.html
Voir la carte en ligne :
https://zettascript.org/tux/g1/worldwotmap.html
http://90.120.177.195/g1/worldwotmap.html
Une partie de duniter.db est exportée en JSON par `gencache.py` (opération faite par le serveur). Les données Cesium+ sont chargées par le navigateur depuis une instance Cesium.
......@@ -33,21 +35,31 @@ Vous pouvez sélectionner une personne en cliquant sur son point. Les certificat
### Paramètres GET
* **lat**, **lon** : Latitude et longitude au centre de la carte (en degrés)
* exemples :
Zoom sur Bordeaux https://zettascript.org/tux/g1/worldwotmap.html?lat=44.82543879996824&lon=-0.5458831787109376&zoom=13
Zoom sur Toulouse https://zettascript.org/tux/g1/worldwotmap.html?lat=43.595559991515586&lon=1.4560317993164065&zoom=12
* Zoom sur Bordeaux https://zettascript.org/tux/g1/worldwotmap.html?lat=44.82543879996824&lon=-0.5458831787109376&zoom=13
* Zoom sur Toulouse https://zettascript.org/tux/g1/worldwotmap.html?lat=43.595559991515586&lon=1.4560317993164065&zoom=12
* **zoom** : Niveau de zoom
* **pubkey** : Clé publique du compte à sélectionner (ne se déplace pas vers lui)
* **pubkey** : Clé publique du compte à sélectionner (ne se déplace pas vers lui). Peut aussi contenir uniquement le début de la clé (insensible à la casse), auquel cas un compte ne sera sélectionné que si il n'y a qu'un seul résultat.
* https://zettascript.org/tux/g1/worldwotmap.html?pubkey=rml12&popup=1#map
* **only** : Nombre de niveaux de certifications à afficher autour du compte sélectionné. Une valeur numérique supérieure _0_ active ce mode.
* exemple :
http://127.0.0.1/g1/worldwotmap.html?lat=47.331377157798244&lon=2.9443359375&zoom=6&pubkey=45GfjkWCWQhJ3epJVGC2NSg1Rcu4Ue1vDD3kk9eLs5TQ&only=3#map
* https://zettascript.org/tux/g1/worldwotmap.html?lat=47.331377157798244&lon=2.9443359375&zoom=6&pubkey=45GfjkWCWQhJ3epJVGC2NSg1Rcu4Ue1vDD3kk9eLs5TQ&only=3#map
* **goto** : Centrer la carte sur le compte sélectionné. La valeur est le niveau de zoom.
* exemple :
Zoom sur _tuxmain_ https://zettascript.org/tux/g1/worldwotmap.html?pubkey=45GfjkWCWQhJ3epJVGC2NSg1Rcu4Ue1vDD3kk9eLs5TQ&goto=14
* Zoom sur _tuxmain_ https://zettascript.org/tux/g1/worldwotmap.html?pubkey=45GfjkWCWQhJ3epJVGC2NSg1Rcu4Ue1vDD3kk9eLs5TQ&goto=14
* **popup** : Affiche initialement la popup sur le compte sélectionné avec _pubkey_ si égal à _1_.
## Contribuer
Dans le code :
* Pouvoir représenter la distance d'un compte/d'une certification au compte sélectionné en faisant varier la couleur ou l'opacité.
* Changer d'époque (afficher la wotmap à un temps donné) (à voir avec les données Cesium+)
* Vérifier l'utilisation des paramètres GET pour éviter le XSS
* Vérifier l'utilisation des paramètres GET et pseudos Ğ1 pour éviter le XSS
* Les lignes dessinées dans le mode "afficher uniquement les certifications du compte sélectionné" ne s'effacent pas bien après déselection du compte.
* Importer toutes les identités (actuellement, celles n'étant pas localisées sur Cesium+ ne sont pas importées). Cela permet d'importer toutes les certifications, donc de construire correctement l'arbre des certifications avec distance maximale ainsi que de trouver tous les membres référents.
* Afficher des statistiques (nombre de certifs, moyenne par membre, données de distance géographique, découpages en régions par communautés géographiques ou de certifications)
* Éventuellement créer un programme pour générer un JSON cache et éviter de surcharger les serveurs Cesium+.
* Améliorer l'interface du menu ?
Sinon :
* Héberger une instance chez vous et publier le lien
* Proposer de l'aide pour la traduction (dans ce cas il faudra songer à implémenter un système de traduction) (après tout, c'est une carte du monde, pas que de la francophonie)
* De l'aide pour la détection de communautés (algos, théorie des graphes)
* Suggestions ?
/*
Copyright 2018 Pascal Engélibert
This file is part of WorldWotMap 0.4.0.
WorldWotMap is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
WorldWotMap is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with WorldWotMap. If not, see <https://www.gnu.org/licenses/>.
*/
function rad(deg) {
return deg * Math.PI / 180;
}
function geoDist(pos1, pos2) {// https://stackoverflow.com/questions/365826/calculate-distance-between-2-gps-coordinates
var a = Math.sin(rad(pos2[0]-pos1[0])/2)**2 + Math.sin(rad(pos2[1]-pos1[1])/2)**2 * Math.cos(rad(pos1[0])) * Math.cos(rad(pos2[0]));
return 12742 * Math.atan2(Math.sqrt(a), Math.sqrt(1-a));
}
function round(value, decimals) {// http://www.jacklmoore.com/notes/rounding-in-javascript/
return Number(Math.round(value+'e'+decimals)+'e-'+decimals);
}
function getParam(param, def=null) {
var result = def, tmp = [];
var items = location.search.substr(1).split("&");
for(var i = 0; i < items.length; i++) {
tmp = items[i].split("=");
if(tmp[0] === param) result = decodeURIComponent(tmp[1]);
}
return result;
}
function metersPerPixel(lat, zoom) {
return 40075017 * Math.cos(rad(lat)) / Math.pow(2, zoom + 8);
}
function metersToPixels(lat, meters, zoom) {
return meters / metersPerPixel(lat, zoom);
}
function pixelsToMeters(lat, pixels, zoom) {
return pixels * metersPerPixel(lat, zoom);
}
This diff is collapsed.
This diff is collapsed.
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment