Site icon

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

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 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:

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:

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

3.3. Limiti


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:


9. Privacy e conformità GDPR

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

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


12. Suggerimenti di sicurezza


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à.

Exit mobile version