Come creare uno script di geolocalizzazione senza usare le API di Google

geolocalizzazione senza google, script geolocalizzazione, html5 geolocation, php ip geolocation, leafet js, maxmind geolite2, ip-api, open source map, localizzare utente, trovare posizione utente, javascript geolocation, web app mappe, privacy, alternativa google maps

La geolocalizzazione è una funzionalità fondamentale per molti progetti web: permette di determinare la posizione geografica di un utente per offrire contenuti personalizzati, mostrare mappe, indicazioni stradali, meteo localizzato o annunci mirati. Tuttavia, l’uso delle API di Google Maps comporta limiti, costi e dipendenza da servizi esterni. In questa guida ti mostrerò come creare **uno script di geolocalizzazione senza utilizzare le API di Google**, basandoci su strumenti gratuiti, open source e rispettosi della privacy.

Mappa OpenStreetMap con marker, geolocalizzazione senza API di Google
mappa OSM + marker “Your Location”, badge “No Google API

1. Perché evitare le API di Google Maps

Le API di Google Maps sono potenti ma comportano alcune limitazioni:

  • Costi: Google offre solo un piccolo credito gratuito mensile, poi si paga per ogni richiesta.
  • Dipendenza: legare il progetto a un servizio esterno rende difficile migrare o mantenere la compatibilità futura.
  • Privacy: i dati di localizzazione vengono trasmessi a server esterni di Google.
  • Performance: il caricamento di librerie e script Google può rallentare il sito.

Fortunatamente, esistono **alternative gratuite e affidabili**, che analizzeremo nel dettaglio.


2. Le alternative open source più usate

Prima di scrivere codice, vediamo i principali strumenti che possiamo usare al posto di Google Maps:

  • HTML5 Geolocation API: nativa nei browser, gratuita, non richiede chiavi API.
  • Leaflet.js: libreria JavaScript open source per creare mappe interattive leggere e flessibili.
  • OpenStreetMap (OSM): database cartografico libero e gratuito che fornisce mappe, coordinate e tile.
  • ip-api.com e ipinfo.io: servizi gratuiti per ottenere coordinate geografiche in base all’indirizzo IP.
  • MaxMind GeoLite2: database locale scaricabile per eseguire geolocalizzazione IP offline.

Combinando questi strumenti puoi realizzare un sistema di geolocalizzazione completo senza alcuna dipendenza da Google.


3. Geolocalizzazione con HTML5 (senza API esterne)

Il modo più semplice per ottenere la posizione dell’utente è tramite la **Geolocation API nativa** di HTML5. Tutti i browser moderni (Chrome, Firefox, Edge, Safari) la supportano.

3.1. Esempio di base in JavaScript

<script>
if ("geolocation" in navigator) {
  navigator.geolocation.getCurrentPosition(function(position) {
    const lat = position.coords.latitude;
    const lon = position.coords.longitude;
    console.log("Latitudine:", lat, "Longitudine:", lon);
    document.getElementById("output").textContent =
      "La tua posizione è: " + lat + ", " + lon;
  }, function(error) {
    console.error("Errore:", error.message);
  });
} else {
  console.log("Geolocalizzazione non supportata");
}
</script>

<p id="output"></p>

Questo codice mostra le coordinate dell’utente direttamente nel browser, previo consenso esplicito.

3.2. Vantaggi

  • Non richiede chiavi o costi.
  • Funziona offline per browser mobili con GPS.
  • Precisione molto alta sui dispositivi con sensori integrati.

3.3. Limiti

  • Richiede il consenso dell’utente.
  • Nei PC desktop la precisione può variare (si basa su IP o reti Wi-Fi).
  • Non restituisce indirizzi o nomi di città (solo coordinate).

4. Geolocalizzazione tramite IP (PHP o JavaScript)

Se non vuoi chiedere il consenso dell’utente o lavorare lato server, puoi stimare la posizione usando l’**indirizzo IP**. È meno preciso ma utile per ottenere la città o la nazione.

4.1. Esempio con ip-api.com

<script>
fetch("https://ip-api.com/json/")
  .then(res => res.json())
  .then(data => {
    document.getElementById("ipresult").innerHTML =
      "Sei a " + data.city + ", " + data.country + "<br>Lat: " +
      data.lat + ", Lon: " + data.lon;
  });
</script>
<div id="ipresult"></div>

ip-api.com restituisce dati JSON come: paese, città, ISP, latitudine, longitudine. Non serve registrarsi né usare chiavi API per un uso moderato.

4.2. Variante PHP

<?php
$ip = $_SERVER['REMOTE_ADDR'];
$geo = json_decode(file_get_contents("http://ip-api.com/json/$ip"));
echo "Città: {$geo->city}, Stato: {$geo->country}, Lat: {$geo->lat}, Lon: {$geo->lon}";
?>

Questo approccio funziona bene nei backend di siti e-commerce, portali meteo o sistemi di tracking utenti.


5. Visualizzare la posizione su una mappa con Leaflet.js

Leaflet è una libreria JavaScript open source per mostrare mappe interattive. Non richiede Google Maps e usa **OpenStreetMap (OSM)** come base.

5.1. Installazione

Include le risorse CSS e JS nel tuo file HTML:

<link rel="stylesheet" href="https://unpkg.com/leaflet/dist/leaflet.css" />
<script src="https://unpkg.com/leaflet/dist/leaflet.js"></script>
<div id="map" style="height:400px;"></div>

5.2. Esempio di script

<script>
if (navigator.geolocation) {
  navigator.geolocation.getCurrentPosition(pos => {
    const lat = pos.coords.latitude;
    const lon = pos.coords.longitude;
    const map = L.map('map').setView([lat, lon], 13);

    L.tileLayer('https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', {
      attribution: '© OpenStreetMap contributors'
    }).addTo(map);

    L.marker([lat, lon]).addTo(map).bindPopup("La tua posizione").openPopup();
  });
}
</script>

Questo codice genera una mappa interattiva con un marker sulla posizione dell’utente, **senza usare Google Maps**.


6. Geolocalizzazione offline con MaxMind GeoLite2

Se vuoi mantenere la geolocalizzazione **completamente indipendente da Internet**, puoi usare il database MaxMind GeoLite2. Si tratta di un archivio IP → località che puoi installare localmente sul tuo server.

6.1. Installazione

  1. Registrati su MaxMind.
  2. Scarica il database “GeoLite2-City.mmdb”.
  3. Installa la libreria PHP “geoip2”.

6.2. Esempio PHP

<?php
require_once 'vendor/autoload.php';
use GeoIp2\Database\Reader;

$reader = new Reader('/path/GeoLite2-City.mmdb');
$record = $reader->city($_SERVER['REMOTE_ADDR']);

echo "Città: " . $record->city->name . "<br>";
echo "Regione: " . $record->mostSpecificSubdivision->name . "<br>";
echo "Nazione: " . $record->country->name . "<br>";
echo "Coordinate: " . $record->location->latitude . ", " . $record->location->longitude;
?>

Il vantaggio è che tutti i dati restano nel tuo server, senza limiti di richieste o problemi di privacy.


7. Geolocalizzazione combinata (HTML5 + IP fallback)

Un approccio professionale consiste nel combinare i due metodi:

  1. Provare la geolocalizzazione HTML5 (più precisa).
  2. Se fallisce o l’utente nega l’accesso, usare il fallback IP.

7.1. Esempio completo

<script>
function geoByIP() {
  fetch("https://ip-api.com/json/")
  .then(res => res.json())
  .then(data => {
    document.getElementById("pos").innerHTML =
      "Posizione stimata da IP: " + data.city + ", " + data.country;
  });
}

if (navigator.geolocation) {
  navigator.geolocation.getCurrentPosition(function(pos) {
    document.getElementById("pos").innerHTML =
      "Posizione precisa: " + pos.coords.latitude + ", " + pos.coords.longitude;
  }, function() {
    geoByIP();
  });
} else {
  geoByIP();
}
</script>
<div id="pos"></div>

Questo sistema garantisce sempre una posizione, anche se l’utente rifiuta l’autorizzazione.


8. Migliorare l’esperienza utente

Per creare un’esperienza professionale:

  • Mostra un messaggio chiaro di richiesta permesso (“Questo sito usa la posizione per offrirti contenuti locali”).
  • Indica la città trovata in modo visivo con una mappa Leaflet.
  • Permetti di correggere manualmente la posizione.
  • Salva la posizione nel localStorage per accessi successivi.

9. Privacy e conformità GDPR

Quando si raccolgono dati di posizione, anche solo coordinate approssimative, bisogna rispettare il GDPR. Ecco alcune regole fondamentali:

  • Informa sempre l’utente con un banner o informativa privacy.
  • Chiedi il consenso esplicito per la geolocalizzazione HTML5.
  • Non salvare dati IP se non necessario.
  • Offri la possibilità di revocare il consenso.

Servizi come ip-api e MaxMind rispettano gli standard GDPR, ma è bene consultare la loro policy.


10. Confronto tra le varie soluzioni

Metodo Precisione Richiede consenso Richiede connessione Note
HTML5 Geolocation Alta (GPS/Wi-Fi) Ottimo per mobile
IP API (ip-api.com) Media No Semplice, immediato
MaxMind GeoLite2 Media No No Funziona offline
Leaflet + OSM No Solo visualizzazione mappe

11. Idee di utilizzo pratico

  • Mostrare negozi o punti vendita vicini
  • Personalizzare offerte o prezzi in base alla località
  • Mostrare previsioni meteo localizzate
  • Creare un sistema di tracking visitatori
  • Generare statistiche di provenienza geografica
  • Rilevare accessi sospetti da nazioni insolite

12. Suggerimenti di sicurezza

  • Non mostrare pubblicamente l’IP dell’utente.
  • Limita le richieste ai servizi esterni per evitare blocchi.
  • Usa HTTPS per proteggere i dati scambiati.
  • Evita di salvare coordinate precise senza motivazione legittima.

13. Domande frequenti (FAQ)

Posso ottenere indirizzo e CAP con questi metodi?

Sì, servizi come ip-api e MaxMind forniscono anche CAP e regione, ma con accuratezza variabile.

Questi sistemi funzionano su mobile?

Sì, soprattutto la geolocalizzazione HTML5, che sfrutta GPS e Wi-Fi.

Leaflet è gratuito?

Assolutamente sì. È open source e può essere usato anche in progetti commerciali.

Serve un account o chiave API?

No, se usi ip-api o MaxMind GeoLite2 non serve alcuna chiave per uso moderato o offline.

Posso usarlo per un sito WordPress?

Sì, puoi inserire gli script direttamente in un template o tramite plugin personalizzato.


14. Conclusione

Creare uno script di geolocalizzazione senza le API di Google è possibile, sicuro e gratuito.
Combinando HTML5 Geolocation, servizi IP come ip-api o database locali come MaxMind, puoi ottenere risultati molto precisi senza costi o vincoli.
Per visualizzare i dati, Leaflet.js e OpenStreetMap offrono una soluzione leggera e personalizzabile.

Queste tecniche permettono di costruire siti web e app indipendenti, rispettosi della privacy e conformi alle normative europee.
Che tu gestisca un e-commerce, un portale informativo o un progetto di data analytics, l’implementazione di una geolocalizzazione autonoma è una scelta strategica che aumenta controllo, sicurezza e affidabilità.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Questo sito utilizza Akismet per ridurre lo spam. Scopri come vengono elaborati i dati derivati dai commenti.