Geocoder (Ruby) - Geocoder (Ruby)
| Autori originali | Alex Reisner |
|---|---|
| Versione iniziale | 8 febbraio 2006 |
| Rilascio stabile | 1.3.0 / 30 gennaio 2016
|
| Scritto in | Rubino |
| Sistema operativo | Linux , OS X , Windows |
| genere | Ruby Library |
| Licenza | Licenza MIT |
| Sito web | http://www.rubygeocoder.com/ |
Geocoder (Ruby) è una libreria di geocodifica per Ruby . La geocodifica aiuta a migliorare le pagine web presentando all'utente informazioni rilevanti sulla posizione. Quando viene utilizzato con Rails , Geocoder aggiunge funzionalità di geocodifica come la ricerca di coordinate con indirizzi stradali o viceversa oltre ai calcoli della distanza per gli oggetti ActiveRecord . Poiché la funzionalità non si basa su funzioni di database proprietarie, trovare diversi oggetti geocodificati in un'area funziona immediatamente per database come MySQL , PostgreSQL e SQLite .
Compatibilità
Geocoder è stato completamente testato con Ruby 1.8.7, 1.9.2 e JRuby 1.5.3.
Geocoder è compatibile con Rails 3, ma c'è solo una funzionalità limitata con Rails 2.
Installazione
I prerequisiti per l'installazione di Geocoder sono Ruby e RubyGems .
Gem Geocoder può essere installato con il seguente comando:
gem install geocoder
Oppure, se stai usando Bundler for Rails, puoi aggiungerlo al tuo Gemfile :
gem 'geocoder'
ed esegui al prompt dei comandi :
bundle install
Può essere utilizzato anche come plugin con rails:
rails plugin install git://github.com/alexreisner/geocoder.git
Configurazione
Per poter utilizzare Geocoder con gli oggetti, il progetto deve essere impostato come segue:
Attributi obbligatori
ActiveRecord
Per poter utilizzare la geocodifica con oggetti ActiveRecord , devono avere due attributi aggiuntivi, coordinate di latitudine e longitudine . Quando sono memorizzati nella tabella, dovrebbero essere chiamati latitudine e longitudine, ma possono essere modificati come spiegato di seguito. Quando si utilizza la geocodifica inversa (traducendo le coordinate di posizione di un utente in un indirizzo fisico), il modello deve implementare un metodo che restituisca un indirizzo. L'indirizzo può essere un singolo attributo; tuttavia, può anche essere un metodo che restituisce una stringa assemblata da diversi attributi come città, stato e paese.
Mongoid
Quando si utilizza Mongoid , il modello deve solo aggiungere l'indirizzo, la latitudine e la longitudine come campi. Il modello deve includere anche Geocoder :: Modello :: Mongoid prima di effettuare qualsiasi chiamata al geocoded_by: metodo .
Comportamento del modello
Nel modello rails , è necessario indicare a Geocoder quale metodo restituisce l'indirizzo completo dell'oggetto:
geocoded_by :full_street_address # can also be an IP address
after_validation :geocode # auto-fetch coordinates
Per la geocodifica inversa, Geocoder deve sapere quale metodo restituisce le coordinate di latitudine e longitudine. Se l'opzione: address non è fornita, recupera automaticamente l'indirizzo nell'attributo address. Altrimenti, recupera l'indirizzo nell'attributo location come nell'esempio fornito di seguito.
reverse_geocoded_by :latitude, :longitude,
:address => :location
after_validation: reverse_geocode # auto-fetch address
È possibile la geocodifica diretta e inversa sullo stesso modello.
geocoded_by :address
reverse_geocoded_by :latitude, :longitude
after_validation :geocode, :reverse_geocode
Per utilizzare nomi diversi per latitudine e longitudine nel modello, è possibile apportare la seguente modifica durante l'implementazione di geocoded_by:
geocoded_by :address, :latitude => :lat, :longitude => :lon
Inoltre, il metodo dell'indirizzo può restituire qualsiasi stringa che verrebbe utilizzata per la ricerca in Google Maps . Uno qualsiasi dei seguenti esempi funzionerà:
- "123 Sample St, New York, NY"
- " Torre Eiffel , Parigi, FR"
- " Raleigh , NC, USA"
Servizi
Per impostazione predefinita, Geocoder utilizza l' API di geocodifica di Google per recuperare indirizzi e coordinate. Attualmente sono supportati questi servizi di geocodifica degli indirizzi:
- Google:
:google -
Yahoo :
:yahoo - Geocoder.ca:
:geocoder_ca(solo Stati Uniti e Canada)
Esempi
Di seguito sono riportati alcuni esempi per dimostrare la funzionalità del geocodificatore:
Hotel.near("Raleigh, North Carolina")
Trova hotel vicino a Raleigh.
@restaurant.distance_to("Empire State Building")
Trova la distanza da @restaurant all'Empire State Building.
Applicazioni
- Gli sviluppatori possono anche utilizzare Geocoder per convertire l' indirizzo IP di un utente nella posizione della città. Effettuando una tale conversione potresti essere in grado di offrire agli utenti contenuti rilevanti per la loro posizione attuale senza bisogno di richiederlo in anticipo.
- Può essere utilizzato per l'analisi geospaziale al fine di riconoscere i modelli all'interno delle informazioni. Questo è molto utile nelle applicazioni di data mining.
- Gli strumenti GIS basati sul Web come Google Maps, Yahoo Maps ecc. Includono funzionalità di geocodifica.