Il geofencing trasforma un luogo in un evento. Disegni su una mappa un confine virtuale, il geofence, e il sistema reagisce quando qualcosa lo attraversa. Quando un furgone entra nella via di un cliente, l'app delle spedizioni segna l'ordine come "in arrivo". Quando lo smartphone di un tecnico lascia il cantiere, il foglio ore ferma il conteggio. Quando un drone si avvicina a uno spazio aereo vietato, il controllore di volo lo riporta indietro. In tutti e tre i casi un geofence fa lo stesso lavoro: trasforma una posizione in un evento.
Questa guida spiega cos'è il geofencing, come funziona il test alla base, quanto deve essere grande un geofence per la precisione di posizione che ottieni davvero, cosa consentono Android e iOS e come gestire il geofencing su un server per un'intera flotta. Le tabelle sulla precisione e il benchmark point-in-polygon sono calcoli e misure nostri; il metodo è in fondo a ogni sezione.
Cos'è il geofencing
Il geofencing ha due componenti: una forma e una regola.
La forma è una regione della superficie terrestre. Le due forme comuni sono il cerchio, definito da una coordinata centrale e da un raggio in metri, e il poligono, definito da un elenco ordinato di punti di latitudine e longitudine che tracciano un contorno. Un cerchio basta per "entro 200 metri da questo negozio". Il poligono serve per "dentro questa zona di consegna" o "entro i confini comunali", dove il bordo è irregolare.
La regola dice cosa succede quando qualcosa attraversa la forma. Gli eventi che contano sono due: ingresso (l'entità tracciata passa da fuori a dentro) e uscita (da dentro a fuori). Quasi tutte le piattaforme ne aggiungono un terzo, la permanenza (dwell), che scatta solo se l'entità resta dentro per un tempo stabilito. La permanenza è l'evento giusto quando l'ingresso scatterebbe troppo spesso, per esempio con i passanti davanti a un negozio.
Come funziona un geofence
A ogni aggiornamento della posizione, il sistema esegue un test di contenimento: questa coordinata è dentro questa forma?
Per un cerchio il test è un calcolo di distanza. Misura la distanza ortodromica dal dispositivo al centro: se è minore del raggio, il dispositivo è dentro. Per un poligono il metodo standard è il test point-in-polygon con ray casting: traccia una semiretta immaginaria dal punto in una direzione e conta quante volte attraversa i lati del poligono. Un numero dispari significa dentro, un numero pari fuori.
La geometria costa poco. Le parti difficili sono tutto il resto:
- Precisione. Una rilevazione della posizione è una stima. Uno smartphone fermo segnala posizioni che oscillano, e vicino a un confine questo genera ingressi e uscite fantasma. La prossima sezione dà i numeri.
- Batteria. Interrogare il GPS di continuo scarica il telefono. I sistemi operativi mobili offrono API di geofencing a basso consumo che usano Wi-Fi e celle e risvegliano l'app solo quando è probabile l'attraversamento di un confine.
- Stato. Un evento di ingresso ha senso solo se lo stato precedente era fuori. Il motore deve ricordare l'ultimo stato noto di ogni entità per ogni geofence.
Quanto deve essere grande un geofence: la precisione, calcolata
Android indica la precisione della posizione come il raggio entro cui si trova la posizione reale con una confidenza del 68% (Location.getAccuracy()). I valori tipici vengono dalle piattaforme stesse: secondo GPS.gov gli smartphone con GPS sono di solito precisi entro 4,9 m a cielo aperto, e la guida al geofencing di Android dice che la posizione via Wi-Fi è di solito precisa entro 20-50 m e senza Wi-Fi può peggiorare fino a "diverse centinaia di metri o diversi chilometri".
Abbiamo modellato l'errore di posizione come una distribuzione normale bidimensionale con quel raggio al 68% e calcolato quante volte una singola rilevazione cade fuori da un geofence circolare quando lo smartphone è fermo esattamente al centro:
| Sorgente di posizione (precisione al 68%) | Geofence da 25 m | 50 m | 100 m | 150 m | 250 m | 500 m |
|---|---|---|---|---|---|---|
| GPS, cielo aperto (5 m) | 0% | 0% | 0% | 0% | 0% | 0% |
| Wi-Fi, buona (20 m) | 16,9% | 0,08% | 0% | 0% | 0% | 0% |
| Wi-Fi, tipica (50 m) | 75,2% | 32,0% | 1,05% | 0,004% | 0% | 0% |
| Senza Wi-Fi, celle (300 m) | 99,2% | 96,9% | 88,1% | 75,2% | 45,3% | 4,2% |
"0%" significa meno dello 0,001%. La regola che ne deriva: il raggio deve essere almeno il doppio della precisione al 68%. Così uno smartphone al centro resta dentro nel 99% delle rilevazioni, e con 2,5 volte nel 99,9%. Con la precisione Wi-Fi tipica sono 100-125 m, in linea con il raggio minimo di 100-150 m consigliato da Android.
Il centro è il caso migliore. Un dispositivo fermo vicino al bordo, come un furgone parcheggiato nel piazzale di un deposito 10 m all'interno del recinto, finisce dalla parte sbagliata molto più spesso:
| Sorgente di posizione | 5 m dentro il bordo | 10 m | 25 m | 50 m | 100 m |
|---|---|---|---|---|---|
| GPS, cielo aperto (5 m) | 6,6% | 0,13% | 0% | 0% | 0% |
| Wi-Fi, buona (20 m) | 35,3% | 22,5% | 3,0% | 0,01% | 0% |
| Wi-Fi, tipica (50 m) | 44,0% | 38,1% | 22,5% | 6,6% | 0,13% |
| Senza Wi-Fi, celle (300 m) | 49,0% | 48,0% | 45,0% | 40,1% | 30,7% |
La soluzione è l'isteresi: prima di cambiare stato, richiedi che la posizione superi il bordo di una distanza di margine. Con un margine pari al valore di precisione, il caso Wi-Fi a 10 m dal bordo scende dal 38,1% di rilevazioni dalla parte sbagliata al 3,5%, e il caso GPS a zero. Aggiungi un tempo di permanenza e una singola rilevazione anomala non genera più un evento.
Metodo. Deviazione standard per asse = precisione / 1,5096, il raggio al 68% di una distribuzione normale bidimensionale. Quota fuori da un cerchio di raggio R per un dispositivo al centro = exp(-R² / 2σ²). Quota dalla parte sbagliata di un bordo rettilineo a distanza d = Φ(-d/σ), con un margine h: Φ(-(d+h)/σ). Le rilevazioni sono trattate come indipendenti, cosa che i ricevitori reali non sono, perché i loro errori variano lentamente. Leggi i numeri come quota di rilevazioni, non come eventi all'ora. Script: scripts/seo/blog-keyword-research/what-is-a-geofence.mjs, output: docs/blog-keyword-research/what-is-a-geofence-2026-09-30.json.
Geofencing su Android e iOS: i limiti delle piattaforme
Su uno smartphone di rado esegui il test di contenimento da solo. Registri i geofence presso il sistema operativo, che li controlla in background con una localizzazione a basso consumo e risveglia l'app a ogni transizione. Questo comporta limiti di cui tenere conto nella progettazione:
| Android (Geofencing API) | iOS (condition monitoring di Core Location) | |
|---|---|---|
| Geofence per app | 100 per app, per utente del dispositivo | 20 condizioni di qualsiasi tipo |
| Forma | Cerchio | Cerchio |
| Eventi | Ingresso, uscita, permanenza (con un loitering delay) | Soddisfatta, non soddisfatta |
| Latenza | Di solito meno di 2 minuti; 2-3 minuti con i limiti alla localizzazione in background; fino a 6 minuti per un dispositivo fermo da tempo | Non indicata con un numero |
| Raggio minimo consigliato | 100-150 m | Non indicato con un numero |
Fonti: la guida al geofencing di Android e la documentazione di Apple sul condition monitoring, secondo cui Core Location impedisce a una singola app di monitorare più di 20 condizioni di qualsiasi tipo contemporaneamente.
Ne seguono due conseguenze pratiche. Primo, entrambe le piattaforme monitorano cerchi, quindi un geofence poligonale su uno smartphone è un cerchio che lo contiene più il tuo test sul poligono quando l'app si risveglia. Secondo, i limiti impediscono a una catena con 500 punti vendita di registrarli tutti. Tieni l'elenco completo su un server, registra i 20 (iOS) o 100 (Android) più vicini e aggiorna la selezione quando l'utente si è spostato abbastanza, per esempio quando esce da un ampio geofence di "aggiornamento" attorno alla sua posizione attuale.
Geofencing lato server su larga scala: point in polygon con un prefiltro H3
Flotte e sistemi di tracciamento degli asset di solito gestiscono il geofencing sul server: ogni veicolo invia posizioni e il backend le confronta con molte zone. Qui il costo del test conta, e cresce con il numero di vertici del poligono.
L'abbiamo misurato su un confine reale: il comune di Amsterdam da OpenStreetMap, due anelli esterni con 7.677 vertici. Abbiamo generato 1.000.000 di punti casuali nel suo bounding box e li abbiamo testati due volte ciascuno.
| Metodo | Tempo per punto | Totale per 1.000.000 di punti |
|---|---|---|
| Ray casting sull'intero poligono | 13,3 µs | 13,3 s |
| Prefiltro H3 a risoluzione 9, ray casting solo vicino al bordo | 2,3 µs | 2,3 s |
Il prefiltro copre il poligono con esagoni H3 di circa 0,1 km². Le 464 celle attraversate dal confine sono marcate "da verificare", le 2.520 celle completamente interne "dentro", e tutto il resto è fuori. Per ogni punto calcoli la sua cella H3, un'operazione a tempo costante, ed esegui il test completo sul poligono solo se la cella è "da verificare". È successo per il 9,2% dei punti. Le risposte coincidevano con il test completo per tutti i 1.000.000 di punti, e costruire la tabella di lookup ha richiesto 135 ms.
Su questo poligono il prefiltro è stato 5,9 volte più veloce, e il guadagno cresce con il numero di vertici, perché la maggior parte dei punti non arriva mai al ciclo sui vertici. Usalo quando confronti migliaia di veicoli con molte zone a intervalli di pochi secondi.
Metodo. @turf/boolean-point-in-polygon per il ray casting, h3-js 3.7.2, Node 23 su un Apple M2 Pro. Celle di bordo individuate campionando ogni lato del poligono ogni 5 m; celle interne ottenute con il polyfill di H3 meno le celle di bordo. Stesso script di sopra; dati del confine © OpenStreetMap contributors (ODbL), relazione 47811, scaricati il 30 settembre 2026. I tempi dipendono dalla macchina; il dato utile è il rapporto.
Da dove arrivano le coordinate
Un controllo di geofence vale quanto la coordinata che gli passi, e quella coordinata di rado arriva come latitudine e longitudine pulite.
In pratica parti da un indirizzo ("Via Roma 12, Milano"), dal nome di un luogo ("il magazzino centrale") o da un segnale grezzo. Trasformarli nel [lng, lat] che serve al test è il compito di geocoding e reverse geocoding:
- Il geocoding converte un indirizzo o il nome di un luogo in coordinate, così puoi costruire un geofence attorno alla sede di un cliente o verificare se la destinazione di un ordine cade in una zona di consegna.
- Il reverse geocoding riconverte le coordinate in un indirizzo, così un evento di ingresso può dire "arrivato in Via Roma 12" invece di "arrivato a 45.4642, 9.1900".
- I dati sui luoghi ti permettono di ancorare i geofence a punti di interesse noti invece che a forme disegnate a mano.
Esempi di geofencing
- Consegne e logistica. Genera gli eventi "in consegna" e "arrivato"; avvisa quando un veicolo esce dal corridoio previsto.
- Assistenza sul campo e personale. Check-in e check-out automatici quando il personale entra o esce da un cantiere.
- Retail e marketing. Invia un'offerta pertinente quando un cliente che ha dato il consenso è vicino a un negozio.
- Tracciamento di flotte e asset. Ricevi un avviso appena un'attrezzatura esce da un'area autorizzata.
- Sicurezza e conformità. Avvisa quando un dispositivo entra in una zona pericolosa o in uno spazio aereo vietato.
- Casa intelligente. Accendi il riscaldamento quando l'ultimo smartphone della famiglia si avvia verso casa.
Geofencing marketing e privacy
Il geofencing marketing usa gli stessi eventi di ingresso e permanenza per mostrare un messaggio o un annuncio: un coupon quando un cliente entra in un centro commerciale, un banner per i visitatori di una fiera. Lavora su dati di localizzazione che identificano una persona, e nell'UE il GDPR cita i "dati relativi all'ubicazione" nella definizione di dato personale (articolo 4, punto 1). Una campagna di geofencing richiede quindi una base giuridica per trattare quei dati, che per notifiche e pubblicità nelle app significa in pratica un consenso revocabile dall'utente.
Le cronologie delle posizioni attirano anche le forze dell'ordine. Un geofence warrant chiede a chi detiene i dati tutti i dispositivi presenti in un'area in una certa finestra di tempo. In United States v. Smith (9 agosto 2024) la Corte d'appello federale del Quinto circuito ha stabilito che i geofence warrant sono mandati generici moderni e violano il Quarto emendamento, anche se in quel caso le prove sono state comunque ammesse grazie all'eccezione della buona fede. Nel dicembre 2023 Google ha annunciato che la Cronologia, la sua cronologia delle posizioni, sarebbe stata salvata sul dispositivo dell'utente. Per il tuo prodotto vale la regola di qualsiasi dato personale: valuta i geofence dove i dati si trovano già, conserva le cronologie grezze delle posizioni solo finché servono e, quando il caso d'uso lo consente, salva gli eventi invece dei tracciati.
Geofencing per gli agenti IA
Gli agenti IA che gestiscono logistica, assistenza sul campo o viaggi devono rispondere a domande come "questo autista è già dentro la zona del deposito?" o "quali di questi negozi sono raggiungibili dal cliente in 15 minuti?". Per farlo servono due cose: dati di localizzazione puliti e un confine con cui confrontarli. L'agente può ottenere una coordinata tramite un'API di geocoding, caricare un geofence come poligono GeoJSON ed eseguire il controllo di contenimento come tool call. Abbina il geofencing a un'isocrona, un confine basato sul tempo di percorrenza invece che su una forma fissa, e l'agente può ragionare sulla raggiungibilità, che è più vicina a come le persone intendono "qui vicino".
Come costruirlo bene
Un geofence affidabile si basa su quattro cose:
- Dimensionalo sulla precisione che hai. Almeno il doppio della precisione al 68%, 100-150 m con una localizzazione di livello Wi-Fi.
- Aggiungi isteresi e permanenza. Un margine oltre il bordo e un tempo minimo all'interno eliminano la maggior parte degli eventi fantasma.
- Salva i confini in modo pulito. GeoJSON è lo standard di fatto; semplifica i poligoni complessi prima di inviarli a un dispositivo.
- Usa coordinate accurate. Una buona API di geocoding e reverse geocoding conta più del codice geometrico.
MapAtlas offre la Geocoding API con geocoding diretto e inverso e la Isochrone API per i confini basati sul tempo di percorrenza, con elaborazione nell'UE. Per controllare a mano coordinate e indirizzi usa lo strumento per le coordinate, e per disegnare una zona a raggio fisso la mappa del raggio.
Letture correlate
- Cos'è un geocode? Geocoding diretto e inverso
- Cos'è un'isocrona?
- Cos'è GeoJSON?
- Cos'è una matrice delle distanze?
Domande frequenti
Cos'è il geofencing?
Il geofencing è l'uso di un confine virtuale, il geofence, attorno a un'area reale per attivare un'azione quando un dispositivo, un veicolo o un agente software vi entra o ne esce. Il confine è un cerchio (un punto centrale e un raggio) oppure un poligono tracciato attorno a un edificio, a una zona di consegna o a un quartiere. Quando una posizione tracciata lo attraversa, il sistema genera un evento: una notifica, un check-in, un webhook o un aggiornamento del database. Il geofencing è uno dei mattoni fondamentali dei servizi basati sulla posizione.
Come funziona il geofencing?
Una sorgente di posizione (GPS, Wi-Fi, celle telefoniche o IP) comunica una posizione. Un test di contenimento stabilisce se quella posizione si trova dentro ogni geofence: un controllo della distanza per i cerchi, un test point-in-polygon per i poligoni. Quando il risultato passa da fuori a dentro, il sistema genera un evento di ingresso, e da dentro a fuori un evento di uscita. La geometria costa poco. Il lavoro di ingegneria riguarda la precisione della posizione, il consumo di batteria e gli eventi falsi vicino al bordo.
Quanto deve essere grande un geofence?
Almeno il doppio della precisione di posizione che puoi aspettarti, e di più se i falsi eventi costano cari. La guida al geofencing di Android consiglia un raggio minimo di 100-150 metri, perché la posizione via Wi-Fi è di solito precisa entro 20-50 metri. Il nostro calcolo lo conferma: con una precisione di 50 metri, uno smartphone fermo al centro di un geofence di 100 metri segnala una posizione esterna in circa l'1% delle rilevazioni, e nello 0,004% con 150 metri. Con il GPS a cielo aperto, precisione di 5 metri, un geofence di 25 metri è già stabile.
Quanti geofence può monitorare un'app su Android e iOS?
Android consente 100 geofence attivi per app e per utente del dispositivo. Su iOS, Core Location impedisce a una singola app di monitorare più di 20 condizioni contemporaneamente, regioni geografiche comprese. Le app che ne hanno bisogno di più tengono l'elenco completo su un server e registrano sul dispositivo solo i geofence più vicini, aggiornandoli mentre l'utente si sposta.
Cos'è il geofencing nel marketing?
Il geofencing marketing invia un messaggio o mostra un annuncio quando una persona entra in un'area, per esempio un negozio, una fiera o il parcheggio di un concorrente. Nell'UE i dati di localizzazione coinvolti sono dati personali ai sensi del GDPR, che cita l'ubicazione nella definizione di dato personale, quindi una campagna di questo tipo richiede una base giuridica, in pratica il consenso per notifiche e pubblicità nelle app. La stessa tecnica senza consenso è ciò che autorità e tribunali contestano.
Che differenza c'è tra un geofence e un geofence warrant?
Un geofence nel software è un confine che definisci per attivare un comportamento dell'app, come un avviso di consegna o un check-in. Un geofence warrant è una richiesta giudiziaria che chiede a chi detiene i dati quali dispositivi si trovavano in un'area in una certa finestra di tempo. In United States v. Smith (9 agosto 2024) la Corte d'appello federale del Quinto circuito degli Stati Uniti ha stabilito che i geofence warrant sono mandati generici moderni e violano il Quarto emendamento. Questo articolo parla del geofence in senso tecnico.

