Google Maps – Oggetto GClientGeocoder

Logo googleI servizi di geolocalizzazione ormai si sprecano. Far sapere dove sei ed in che momento, se in parte mina la tua privacy, dall’altro può essere viatico di buone opportunità. D’altra parte chi non vuole far sapere dove sta in un dato momento, basta che spenga il ricevitore gps πŸ™‚

Ma a noi oggi questo non interessa. Quello che vogliamo è trovare un luogo avendo informazioni non necessariamente precise. Per questo ci aiuta Google Maps e l’oggetto GClinetGeocoder.

Google Maps gestisce le varie posizioni di una mappa tramite un punto identificato da latitudine e longitudine. Quindi servirebbe avere un gigantesco database punto a punto con riferimenti incrociati per ottenere la corrispondenza di un punto ad un input di tipo testo che descrive un indirizzo.

Fortunatamente ci viene in aiuto GMaps mettendoci a disposizione una classe che si occupa di recuperare le coordinate di un indirizzo, anche quando questo riporta dati sommari.

var geocoder = new GClientGeocoder();
geocoder.getLatLng(address, YourCallbackFunction(point));

Istanziando l’oggetto GClientGeocoder possiamo sfruttarne il metodo getLatLng per ricavare le coordinare necessario. Oltre questo, possiamo richiamare una funzione di callback che direttamente dal predetto metodo sarà in grado di gestire la risposta alle coordinate date. Possiamo ad esempio aggiungere direttamente un marker alla mappa. Di seguito un esempio:

    var map = null;
    var geocoder = null;
    var address = ‘97015 Italy’;

    function initialize() {
      if (GBrowserIsCompatible()) {
        var map = new GMap2(document.getElementById("gmaps"));
        var geocoder = new GClientGeocoder();
       
        geocoder.getLatLng(address, function(point){
          if(!point){
            alert(‘Spiacente, indirizzo non trovato’);
          }else{
            var marker = new GMarker(point);
            map.addOverlay(marker);
            map.setCenter(point, 8);
          }
        });
        map.setUIToDefault();
      }
    }

Stabilendo come indirizzo di default 97015 Italy, il geocoder andrà a cercare una coordinata coerente e nel nostro caso si posizionerà su Modica, al centro della zona che ha come CAP 97015. Avremmo potuto essere più precisi, specificando un indirizzo valido, finanche un numero civico.

Se il geocoder non trova nessuna corrispondenza avvertirà l’utente dell’errore arrestandosi subito dopo, altrimenti piazzerà un marker nel punto trovato e centrerà la mappa con riferimento a questo.

Tutto abbastanza semplice. Ma un esempio pratico può aiutare molto. Provate ad inserire nella form il vostro indirizzo di casa e vedrete che GMaps vi scoverà in men che non si dica πŸ™‚

5 thoughts on “Google Maps – Oggetto GClientGeocoder”

  1. Ciao davidonzo πŸ™‚

    Volevo solo segnalarti che in caso di calcolo di un indirizzo, il 99,9% delle volte è errato ottenendo il marker qualche metro più avanti o indietro o anche solo semplicemente sul palazzo di fronte a quello indicato πŸ˜‰

  2. Ciau!

    La precisione millimetrica penso solo un satellite potrebbe darla.
    Ma tutto sommato, per quel che fa google, l'errore lo considero accettabile.

    Anche casa mia la mette qualche metro più in là. C'è pure da considerare che i civici cambiano più frequentemente di quello che si pensa.

  3. Ciao, posso chiederti una informazione. Io vorrei fare un mini motore di ricerca di cimiteri nel mondo, quindi vorrei sfruttare API di google Maps

    Puoi aiutarmi?

Comments are closed.