dataninja / advanced-mapping-tool Goto Github PK
View Code? Open in Web Editor NEWAnother advanced mapping tool by Dataninja
License: Apache License 2.0
Another advanced mapping tool by Dataninja
License: Apache License 2.0
Se si indicano delle variabili in dataSets.schema.values che non esistono nel dataset caricato (classico errore di copia-incolla o di typo) va in errore, ma probabilmente dovrebbe semplicemente ignorarle.
Line 46, file js/dataninja-advanced-mapping-tool.main.js
In questo momento il testo di descrizione nella legenda è fisso, ma in realtà dovrebbe dipendere dal dataset selezionato.
Viene incluso nel css relativo, compattato da grunt nel file dataninja-advanced-mapping-tool.min.css, ma con il percorso sbagliato, quello della libreria in bower_components/. Ovviamente questa cartella non esiste quando si clona il repo, si crea con il comando bower install
.
Bisogna fare in modo che quando grunt concatena e minifica il css, i percorsi relativi agli assets delle librerie vengano sostituiti da quelli relativi corretti dell'applicazione in deploy (le immagini in img/). Anche perché le immagini necessarie sono già correttamente copiate in img/.
Il problema comunque sembra esistere solo per il controllo fullscreen.
Al momento il geocoder si limita a zoomare la mappa alle prime coordinate ricevute da Nominatim. Se c'è una choropleth attiva, dovrebbe almeno verificare che a quelle coordinate corrisponda un territorio e in caso affermativo aprire la relativa infowindow.
Possibile plugin utile: https://github.com/mapbox/leaflet-pip
Molte delle stringhe sono personalizzabili nel file di configurazione, ma non tutte. Da pensare invece a come supportare la traduzione delle stringhe che fanno parte dei dati (label, nomi colonne, ecc.).
Non serve più... :)
A parte header (pulsanti di condivisione ed eventuali downloads) e footer (licenza dei dati), la parte centrale della infowindow si può personalizzare mediante template.
Al momento è definito solo il modello 'table', ma si possono definire template per contenuti multimediali (clicco sul territorio e mi si apre un'immagine, una gallery, un video embeddato, una timeline, ...) e per grafici (torte, barre, istogrammi, ...).
Per i grafici userei qualche libreria costruita su d3, come d4: http://visible.io/
Questione collegata a #10 : se si cambiano le variabili da mostrare sulla mappa, forse dovrebbe cambiare in accordo anche la label del tooltip che appare quando il mouse si muove sui territori.
Ispirandosi a questo lavoro di Matteo Fortini si potrebbe facilmente inserire un div laterale (destra o sinistra, ma anche sopra o sotto) con contenuto statico, di commento, descrizione e presentazione della mappa.
cc @nelsonmau
Al momento il numero di bin per disegnare la choropleth è fissato a livello di dataset, ma all'interno dello stesso dataset possono esserci colonne con ordini di grandezza dei valori molto diversi tra loro e questo può causare classi vuote o ripetute.
Ci sono due strade per risolvere questo problema:
Se entrambe le strade sono fattibili, probabilmente la cosa migliore è implementare la prima e ricadere nella seconda se il numero di bin indicato non è buono.
È possibile avere dei bin di ampiezza nulla all'inizio o alla fine della serie (es. 0 - 0). In questo caso la label dovrebbe essere semplicemente 0.
Si può usare una funzione custom per filtrare le colonne da mostrare nella infowindow, ma per filtri semplici sarebbe meglio supportare un semplice array delle colonne che si vogliono / non si vogliono mostrare.
The original osmGeocoder plugin doesn't use all features of Nominatim and so if you are interested in simple city research, often the geocoding fails because of a result list full of road with a city in the name.
I started a fork to add featuretype support, see https://help.openstreetmap.org/questions/27915/how-to-narrow-the-result-from-nominatim-with-only-cities-and-countries-no-additional-areas.
I valori predefiniti (lat, lng, infowindow) dovrebbero essere più intelligenti ed essere per esempio case insensitive (cioè se il dataset ha Lat invece di lat dovrebbe andar bene lo stesso, anche senza specificare il parametro mr.lat=Lat). Idem per lng che dovrebbe valere di default anche per lon (e varianti con le maiuscole).
Original: https://github.com/Dataninja/confiscatibene-choropleth/issues/15
Dare la possibilità di impostare il font del testo (e altre caratteristiche tipografiche) nel file di configurazione, in modo da migliorare al massimo l'integrazione della mappa all'interno di una pagina specifica.
Dovrebbe poter essere possibile disattivare tooltip (onmouseover) e infowindow (onclick) per particolari geolayers o datasets.
La view a tabella mostra una riga per ogni colonna del dataset, ma spesso alcune colonne del dataset possono essere raggruppate e la infowindow dovrebbe poter mostrare questi due livelli.
Si può aggiungere nel file di configurazione la specificazione di questi raggruppamenti seguendo una sintassi simile a quella dei file di grunt: un oggetto che ha come chiavi i nomi dei gruppi e come valori un array dei nomi delle colonne appartenenti a ogni gruppo.
La tabella finale avrebbe la forma:
Come è classico per le configurazioni di base dei CMS, nel repo si dovrebbe avere un file di configurazione vuoto (con la sola struttura, dataninja-advanced-mapping-tool.conf.sample.js) che l'utente copia e modifica in un file dataninja-advanced-mapping-tool.conf.js specifico.
Le mappe pronte e finite (caratterizzate da uno specifico file di configurazione e da livelli geografici, dati e immagini) potrebbero essere pubblicate nel repo in una cartella demo, magari visualizzabile mediante le github pages.
Al momento i geojson dei territori (file statici) e i dati associati (api di dkan) sono caricati indipendentemente e poi joinati mediante il codice istat. Il join avviene in maniera banale, con un doppio ciclo sui due array e una semplice comparazione di uguaglianza. C'è un algoritmo più furbo, rapido ed efficiente? Magari in una libreria ad-hoc? Tipo questa: http://www.thomasfrank.se/SQLike/
Original: https://github.com/Dataninja/confiscatibene-choropleth/issues/24
Un problema di closure, la funzione viene assegnata al dataset in un ciclo, ma quando viene richiamata fa casino...
Al pari del menù dei livelli geografici, si potrebbe lasciare all'utente la possibilità di scegliere le tile da visualizzare con un menù dedicato.
Ora che la configurazione della mappa è completamente separata dalle funzionalità della mappa, si può pensare di sviluppare un editor visuale del file di configurazione, che permetta di impostare tutti i parametri e caricare tutti i file necessari (shape, dati e immagini) in modalità WYSIWYG.
In prospettiva potremmo seguire il modello di business di slid.es: libreria revealjs open source, ma editor avanzato freemium (uso di base gratuito previa registrazione, uso avanzato a pagamento).
cc @nelsonmau
Now geocoder control is disabled on mobile, but it can be added under the map before the infowindow in widget mode.
Pur mantenendo un testo predefinito per la infowindow chiusa (ma che sia breve breve), si può aggiungere in alto a destra un pulsante info per aprirne una versione estesa (cc @nelsonmau ).
Original: https://github.com/Dataninja/confiscatibene-choropleth/issues/42
Al momento l'infowindow è interna alla mappa (in basso a destra), ma in modalità widget è esterna sotto la mappa. Si può generalizzare la cosa permettendo di specificare nel file di configurazione dove posizionare la infowindow: all'interno, al di sotto o a destra (o sopra o a sinistra).
In questo momento la cartella predefinita per gli shape da usare come livelli vettoriali è geo/ (per ora file geojson).
Molti file sono però standard: i confini nazionali del mondo, le suddivisioni regionali, provinciali e comunali dell'Italia, ecc. Contemporaneamente però non ha senso includerli nella mappa stessa, perché non è detto che servano.
Suggerisco quindi di creare un repo a parte con tutti i file che possono servire, da mantenere indipendentemente dalla mappa. Poi questo repo sarà una dipendenza della mappa (scaricabile via bower) e un task di grunt avrà il compito di leggere il file di configurazione e includere nella mappa compilata i soli file necessari.
cc @aborruso
Da aggiungere un oggetto tileSources nel file di configurazione per poter specificare un servizio di tileserver direttamente con il nome (senza dover specificare ogni volta il template dell'url del servizio).
Possibilità di abilitare la pubblicazione del logo solo in modalità ?embed
Includere nel conf in // Embed options la funzionalità di logo active: true/false
Quando si selezionano i dati da mostrare sulla mappa (colori nel caso della choropleth), la variazione è istantanea. Ci starebbe bene un'interpolazione cromatica tra il colore di partenza e quello di arrivo...
Al momento il caricamento dei dati dalle API di Dkan funziona benone (same-origin policy permettendo). In teoria dovrebbe funzionare anche con le API di Ckan out-of-the-box, ma va verificato e introdotto un dataSource apposito nel file di configurazione.
Non ha molto senso che il file di configurazione sia minificato e concatenato con gli altri, perché questo richiede necessariamente grunt per avere una versione di deploy della mappa.
Deve essere possibile per l'utente clonare il repository (senza quindi dipendenze), modificare il file di configurazione e avere subito la mappa finale (composta dai file index.html + dataninja-advanced-mapping-tool.lib.min.js + dataninja-advanced-mapping-tool.conf.js + dataninja-advanced-mapping-tool.min.js + dataninja-advanced-mapping-tool.min.css ed eventualmente dalle cartelle data/ + geo/ + img/).
Ci deve essere qualche problema nel calcolo della larghezza minima, che però non avviene per gli altri menù.
La mappa così com'è nasce con le choropleth in mente, ma condivide con altri tipi di visualizzazione molti elementi, come il join tra dati e territori, ecc. Quindi una generalizzazione immediata è quella di sostituire i colori dei territori con la dimensione di bolle posizionate sui loro centri geometrici (con opportuna gestione dei territori concavi).
La risposta delle API di Dkan non è molto coerente nell'informazione di quanti risultati sono stati tornati: "limit" riporta il limite superiore nel numero di risultati (esplicito o di default), "total" riporta il numero totale di righe della tabella interrogata, non i risultati totali della query con filtro.
Original: https://github.com/Dataninja/confiscatibene-choropleth/issues/6
Sulla falsariga del livello dei marker puntuali come da #15 , si può prevedere un layer che visualizzi relazioni uno-a-uno tra territori sotto forma di connessioni. Un grafo sovrapposto alla mappa, con i territori come nodi, un po' come il grafo di relazioni di amicizia di facebook: https://www.facebook.com/notes/facebook-engineering/visualizing-friendships/469716398919 :)
Qualche suggestione in questa discussione su fb: https://www.facebook.com/alessio.cimarelli/posts/10152233217122026 @nelsonmau @aborruso
Original: https://github.com/Dataninja/confiscatibene-choropleth/issues/38
Ci dovrebbe essere la possibilità di bloccare lo zoom a un dato valore in base al livello geografico selezionato, così che viste panoramiche non possano essere interpretate a livello locale...
Oltre che servire per la formattazione di numeri e date in output, la lingua dovrebbe servire anche per gestire il parsing dei dati, a livello di dataset (gestione corretta di virgole decimali e punti delle migliaia per l'italiano e viceversa per l'inglese).
Position: .conf.js > Attibution Line
Icons doesn't come from "Freepik / Simple Share" as follow:
'icons from Freepik and Simple Share Buttons'
The previous attribution would be removed
Original: https://github.com/Dataninja/confiscatibene-choropleth/issues/45
Quanto sarebbe bello caricare i dati direttamente da un Google Spreadsheet e rendere la mappa sincronizzata con la tabella remota? :)
Da usare la libreria tabletop: https://github.com/jsoma/tabletop
Sarebbe da generalizzare questo plugin https://github.com/Dataninja/wp-cbmap-shortcode e completarlo.
Sarebbe da usare lo short url anche nel codice di embed...
Original: https://github.com/Dataninja/confiscatibene-choropleth/issues/37
Position: .conf.js
Option: map > zoom > scrollwheel
Issues: "false" option doesn't works
Per i dataset, le description vengono usate sia nel testo visualizzato, sia in attributi title di alcuni elementi. In quest'ultimo caso eventuale markup viene gestito male, bisognerebbe eliminarlo prima di valorizzare il title.
The Acetate Geoiq background tiles are no more available and you have always a gray background.
It's necessary to change it.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.