Articulo de referencia

Geocodificador (Ruby)

Geocoder (Ruby) es una biblioteca de geocodificación para Ruby . La geocodificación ayuda a mejorar las páginas web al presentar información relevante sobre la ubicación al usua...

Geocoder (Ruby) es una biblioteca de geocodificación para Ruby . La geocodificación ayuda a mejorar las páginas web al presentar información relevante sobre la ubicación al usuario. Cuando se usa con Rails , Geocoder agrega funcionalidad de geocodificación, como encontrar coordenadas con direcciones postales o viceversa, además de cálculos de distancia para objetos ActiveRecord . [ 1 ] Dado que la funcionalidad no depende de funciones de base de datos propietarias, encontrar diferentes objetos geocodificados en un área funciona directamente para bases de datos como MySQL , PostgreSQL y SQLite . [ 1 ]

Compatibilidad

Geocoder ha sido probado exhaustivamente con Ruby 1.8.7, 1.9.2 y JRuby 1.5.3. [ 1 ]

Geocoder es compatible con Rails 3, pero su funcionalidad es limitada con Rails 2. [ 1 ]

Instalación

Los requisitos previos para instalar Geocoder son Ruby y RubyGems .

La gema Geocoder se puede instalar con el siguiente comando:

gem install geocoder

O bien, si estás usando Bundler para Rails, puedes agregar esto a tu Gemfile : [ 1 ]

gema 'geocodificador'

y ejecutar en el símbolo del sistema : [ 2 ]

instalación del paquete

También se puede usar como un complemento con Rails: [ 1 ]

Configuración

Para utilizar Geocoder con objetos, el proyecto debe configurarse de la siguiente manera:

Atributos requeridos

Registro activo

Para utilizar la geocodificación con objetos ActiveRecord , estos deben tener dos atributos adicionales: coordenadas de latitud y longitud . [ 1 ] Al almacenarse en la tabla, deben llamarse latitud y longitud, pero pueden modificarse como se explica a continuación. Al utilizar la geocodificación inversa (traducir las coordenadas de ubicación de un usuario a una dirección física), el modelo debe implementar un método que devuelva una dirección. [ 3 ] La dirección puede ser un único atributo; sin embargo, también puede ser un método que devuelva una cadena compuesta a partir de diferentes atributos, como ciudad, estado y país. [ 1 ]

Mongoide

Al usar Mongoid , el modelo solo necesita agregar la dirección, la latitud y la longitud como campos. El modelo también debe incluir Geocoder::Model::Mongoid antes de realizar cualquier llamada al método geocoded_by :. [ 1 ]

Comportamiento del modelo

En el modelo de Rails , se debe indicar a Geocoder qué método devuelve la dirección completa del objeto: [ 1 ]

geocoded_by :full_street_address # también puede ser una dirección IP after_validation :geocode # obtención automática de coordenadas

Para la geocodificación inversa, Geocoder debe saber qué método devuelve las coordenadas de latitud y longitud. Si no se proporciona la opción :address, obtiene la dirección automáticamente en el atributo address. De lo contrario, obtiene la dirección en el atributo location como en el ejemplo que se muestra a continuación. [ 1 ]

reverse_geocoded_by :latitude , :longitude , :address => :location after_validation : reverse_geocode # obtención automática de la dirección

Es posible realizar geocodificación directa e inversa en el mismo modelo. [ 1 ]

geocodificado_por :dirección geocodificado_inverso_por :latitud , :longitud después_de_la_validación :geocodificar , :geocodificar_inverso

Para utilizar nombres diferentes para latitud y longitud en el modelo, se puede realizar el siguiente cambio al implementar geocoded_by: [ 1 ]

geocodificado_por :dirección , :latitud => :lat , :longitud => :lon

Además, el método address puede devolver cualquier cadena que se usaría para buscar en Google Maps . [ 1 ] Cualquiera de los siguientes ejemplos funcionará:

  • "123 Sample St, Nueva York, NY"
  • " Torre Eiffel , París, Francia"
  • " Raleigh , Carolina del Norte, EE. UU."

Servicios

Por defecto, Geocoder utiliza la API de geocodificación de Google para obtener direcciones y coordenadas. Actualmente, se admiten los siguientes servicios de geocodificación de direcciones:

  • Google: :google[ 3 ]
  • Yahoo : :yahoo[ 4 ]
  • Geocoder.ca: :geocoder_ca(Solo para EE. UU. y Canadá)

Ejemplos

Aquí hay algunos ejemplos [ 5 ] para demostrar la funcionalidad del geocodificador:

Hotel cerca de Raleigh, Carolina del Norte .

Encuentra hoteles cerca de Raleigh.

@restaurant . distancia_a ( "Empire State Building" )

Calcula la distancia desde @restaurant hasta el Empire State Building.

Aplicaciones

Referencias

  1. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 "Archivo: README — Documentación para rails-geocoder (0.9.11)" . www.rubydoc.info . Consultado el 31-01-2016 .
  2. "alexreisner/geocoder: Solución completa de geocodificación en Ruby" . www.github.com .
  3. 1 2 "La API de geocodificación de Google Maps" . Google Developers . Consultado el 13 de febrero de 2016 .
  4. "Yahoo BOSS Geo Services" . developer.yahoo.com . Consultado el 13 de febrero de 2016 .
  5. "Ruby Geocoder" . www.rubygeocoder.com . Consultado el 31 de enero de 2016 .
  6. "Buscar por ubicación con Geocoder" . synbioz.com . Consultado el 7 de febrero de 2016 .
  • Sitio web oficial
  • Geocodificador en GitHub