Conteggio dei taxi animato a New York per confine del codice postale (simulato, time-lapse):
Gli stili basati sui dati sono una funzionalità di Google Maps Platform che ti consente di utilizzare i poligoni dei confini amministrativi di Google, applicare stili a questi poligoni per la visualizzazione sulle mappe e combinare i tuoi dati per creare mappe ricche e personalizzate che possono essere utilizzate per l'analisi visiva e una migliore comprensione dei dati. Questo documento illustra alcuni casi d'uso che spiegano perché e come visualizzare i dati con gli stili basati sui dati su una mappa quasi in tempo reale integrando i feed di dati dinamici.
Gli stili basati sui dati ti consentono di creare mappe che mostrano la distribuzione geografica dei dati, personalizzare dinamicamente lo stile dei poligoni e interagire con i dati tramite gli eventi di clic. Queste funzionalità possono essere utilizzate per creare mappe informative e coinvolgenti per una varietà di casi d'uso e settori.
Di seguito sono riportati alcuni esempi di casi d'uso che potrebbero essere applicabili a una mappa che mostra gli aggiornamenti dei dati dinamici con gli stili basati sui dati:
- Ride sharing: gli aggiornamenti in tempo reale possono essere utilizzati per identificare le aree ad alta domanda, nel qual caso alcuni provider potrebbero applicare prezzi maggiorati.
- Trasporti: gli aggiornamenti in tempo reale possono essere utilizzati per identificare le aree di congestione, il che aiuterà a determinare i migliori percorsi alternativi.
- Elezioni: la notte delle elezioni, i dati dei sondaggi in tempo reale possono essere utilizzati per visualizzare i risultati in tempo reale.
- Sicurezza dei lavoratori: gli aggiornamenti in tempo reale possono essere utilizzati per monitorare gli eventi in tempo reale, identificare le aree ad alto rischio e fornire consapevolezza situazionale ai soccorritori sul campo.
- Meteo: gli aggiornamenti in tempo reale possono essere utilizzati per monitorare il movimento delle tempeste, identificare i pericoli attuali e fornire avvisi e notifiche.
- Ambiente: gli aggiornamenti in tempo reale possono essere utilizzati per monitorare il movimento delle ceneri vulcaniche e di altri inquinanti, identificare le aree di degrado ambientale e monitorare l'impatto dell'attività umana.
In tutte queste situazioni, i clienti possono sbloccare un valore aggiuntivo combinando i feed di dati in tempo reale con i confini di Google per visualizzare rapidamente e facilmente i dati su una mappa, ottenendo informazioni quasi istantanee per prendere decisioni più informate.
Approccio architetturale alla soluzione
Ora vediamo come creare una mappa utilizzando gli stili basati sui dati per visualizzare i dati dinamici. Come illustrato in precedenza, il caso d'uso è un conteggio dei taxi di New York visualizzato per codice postale. Questo può essere utile agli utenti per capire quanto sarà facile chiamare un taxi.
Di seguito è riportato un diagramma dell'architettura dell'applicazione dell'approccio:
La soluzione di stili basati sui dati dinamici
Ora vediamo i passaggi necessari per implementare una mappa coropletica con stili basati sui dati dinamici dinamica per il tuo set di dati.
Questa soluzione ti consente di visualizzare un set di dati ipotetico della densità dei taxi in tempo reale intorno a New York per codice postale. Sebbene questi dati non siano reali, hanno applicazioni nel mondo reale e ti danno un'idea della potenza e delle funzionalità di come i dati dinamici possono essere visualizzati sulla mappa con gli stili basati sui dati.
Passaggio 1: scegli i dati da visualizzare e uniscili a un ID luogo di confine
Il primo passo è identificare i dati che vuoi visualizzare e assicurarti che possano essere abbinati ai confini di Google. Puoi eseguire questa corrispondenza lato client chiamando il metodo di callback findPlaceFromQuery per ogni codice postale. Tieni presente che i codici postali negli Stati Uniti hanno nomi distinti, ma altri livelli amministrativi no. Dovrai assicurarti di selezionare l'ID luogo corretto per la query nei casi in cui potrebbero esserci risultati ambigui.
const request = {
query: postalCode,
fields: ['place_id'],
};
function findPlaceId() {
placesService.findPlaceFromQuery(request, function (results, status) {
if (status === google.maps.places.PlacesServiceStatus.OK) {
console.log(results[0]);
}
});
}
Se i tuoi dati hanno valori di latitudine e longitudine, puoi anche utilizzare l'API Geocoding con il filtro dei componenti per risolvere questi valori di latitudine/longitudine in valori di ID luogo per il livello degli elementi a cui ti interessa applicare lo stile. In questo esempio, applicherai lo stile al livello degli elementi POSTAL_CODE.
Passaggio 2: connettiti ai dati in tempo reale
Esistono diversi modi per connettersi alle origini dati e l'implementazione migliore dipenderà dalle tue esigenze specifiche e dall'infrastruttura tecnica. In questo caso, supponiamo che i tuoi dati si trovino in una tabella BigQuery con due colonne: "zip_code" e "taxi_count" e che li interrogherai tramite una funzione Cloud Functions Firebase.
async function queryNycTaxis() {
// Queries the NYC Taxis dataset.
// Create a client
const bigqueryClient = new BigQuery();
// The SQL query to run
const sqlQuery = 'SELECT zip_code, taxi_count
FROM \'YOUR_DATASET_ID.TABLE\' LIMIT 100';
const options = {
query: sqlQuery,
// Location must match that of the dataset(s)
// referenced in the query.
location: 'US',
};
// Run the query
const [rows] = await bigqueryClient.query(options);
rows.forEach(row => {
const postalCode = row['zip_code'];
const taxiCount = row['taxi_count'];
});
}
Poi dovrai assicurarti di mantenere aggiornati i dati. Un modo per farlo è chiamare la query sopra utilizzando un web worker e impostare un timer per aggiornare i dati utilizzando la funzione setInterval. Puoi impostare l'intervallo su un valore appropriato, ad esempio aggiornando la mappa ogni 15 secondi. Ogni volta che trascorre l'intervallo di tempo, il web worker richiederà i valori taxiCount aggiornati per ogni codice postale.
Ora che possiamo eseguire query e aggiornare i dati, assicuriamoci che l'aspetto dei poligoni della mappa rifletta queste modifiche.
Passaggio 3: applica lo stile alla mappa con gli stili basati sui dati
Ora che hai i valori dei dati dinamici necessari per creare e applicare uno stile visivo ai confini dei codici postali nell'istanza di Maps JavaScript come oggetto JSON, è il momento di applicare uno stile come mappa coropletica.
In questo esempio, applicherai lo stile alla mappa in base al numero di taxi in ogni codice postale, dando agli utenti un'idea della densità e della disponibilità dei taxi nella loro zona. Lo stile varierà a seconda dei valori del conteggio dei taxi. Alle aree con il minor numero di taxi verrà applicato uno stile viola e la mappa a gradiente di colore passerà dal rosso all'arancione e terminerà con il giallo dei taxi di New York per le aree a maggiore densità. Per questa combinazione di colori, applicherai questi valori di colore a fillColor e strokeColor. L'impostazione di fillOpacity su 0,5 consente agli utenti di visualizzare la mappa sottostante, mentre l'impostazione di strokeOpacity su 1,0 consente loro di distinguere i confini dei poligoni dello stesso colore:
const featureLayer = map.getFeatureLayer(
google.maps.FeatureType.POSTAL_CODE
);
featureLayer.style = (featureStyleFunctionOptions) => {
const placeFeature = featureStyleFunctionOptions.feature;
// taxiCount per (postal_code) PlaceID
const taxiCount = zips[placeFeature.placeId];
let fillColor;
let strokeColor;
// Apply colors to features based on taxiCount values
if (taxiCount < 8) {
fillColor = "#571845";
strokeColor = "#571845";
} else if (taxiCount < 13) {
fillColor = "#900c3e";
strokeColor = "#900c3e";
} else if (taxiCount < 21) {
fillColor = "#c60039";
strokeColor = "#c60039";
} else if (taxiCount < 34) {
fillColor = "#fe5733";
strokeColor = "#fe5733";
// keep else if or the whole map gets this style with else
} else if (taxiCount >= 34) {
fillColor = "#fec30f";
strokeColor = "#fec30f";
}
return {
fillColor,
strokeColor,
fillOpacity: 0.5,
strokeOpacity: 1.0,
};
Conclusione
Gli stili basati sui dati per i confini di Google ti consentono di utilizzare i tuoi dati per applicare lo stile alla mappa per una varietà di implementazioni in settori e segmenti diversi. La connessione ai dati in tempo reale ti consente di comunicare cosa sta succedendo, dove sta succedendo e quando sta succedendo. Questa funzionalità ha il potenziale per sbloccare il valore dei tuoi dati in tempo reale e aiutare gli utenti a comprenderli meglio in tempo reale, nel mondo reale.
Azioni successive
- Guarda il webinar Come utilizzare gli stili basati sui dati per applicare lo stile ai confini delle mappe Google.
- Porta la visualizzazione a un livello superiore con gli eventi di clic per gli stili basati sui dati.
- Valuta la possibilità di aggiungere indicatori avanzati alla mappa.
Collaboratori
Autore principale:
Jim Leflar | Ingegnere di soluzioni di Google Maps Platform