Geocoder, s joya cerca método no funciona en los carriles 5

votos
0

Estado tratando de utilizar la gema geocodificador para encontrar lugares utilizando el método geocodificadores cerca para encontrar ciertos lugares cerca a ciertos puntos.

def index
  @data = Datum.all

   @emergency = Emergency.last
   @data_near = Datum.near([@emergency.longitude,@emergency.latitude],100,:units => :km)

  @geojson = Array.new

  @data_near.each do |mapdata|
     @geojson << {
          type: 'Feature',
          geometry: {
            type: 'Point',
            coordinates: [mapdata.longitude, mapdata.latitude]
          },
          properties: {
            name: mapdata.description,
            address: mapdata.address,
            BusType: 'hospital',
            popupContent: #{mapdata.address} is a #{mapdata.description},
            :'marker-color' => '#00607d',
            :'marker-symbol' => 'circle',
            :'marker-size' => 'medium'
          }
        }
  end
  respond_to do |format|
     format.html
     format.json{ render json: @geojson }
  end

fin

Ese es el código que estoy tratando de correr, devuelve una matriz vacía incluso cuando los lugares cercanos dentro de los parámetros especificados están presentes. Cuando trato de ejecutar el código directamente en la consola de rieles con points.eg real.

data = Datum.near([36.7689503,-1.381776],10,:units => :km)

No entiendo cualquier error generado pero la salida de lo que consigo es menos legible o comprehensible.The salida es:

Datum Load (0.3ms)  SELECT  data.*, (111.19492664455873 * ABS(data.latitude - 36.7689503) * 0.7071067811865475) + (96.29763124613503 * ABS(data.longitude - -1.381776) * 0.7071067811865475) AS distance, CASE WHEN (data.latitude >= 36.7689503 AND data.longitude >= -1.381776) THEN  45.0 WHEN (data.latitude <  36.7689503 AND data.longitude >= -1.381776) THEN 135.0 WHEN (data.latitude <  36.7689503 AND data.longitude <  -1.381776) THEN 225.0 WHEN (data.latitude >= 36.7689503 AND data.longitude <  -1.381776) THEN 315.0 END AS bearing FROM data WHERE (data.latitude BETWEEN 36.67901813940813 AND 36.85888246059187 AND data.longitude BETWEEN -1.4940430256783075 AND -1.2695089743216923) ORDER BY distance ASC LIMIT ?  [[LIMIT, 11]]




 => #<ActiveRecord::Relation []> 

Cualquier ayuda será muy apreciada.

Publicado el 13/11/2017 a las 17:29
fuente por usuario
En otros idiomas...                            


1 respuestas

votos
0

t.string "longitude"
t.string "latitude"

Había ahorrado mis coordenadas en la base de datos con el tipo de datos de cadena que está mal, las coordenadas deben ser guardados con los datos attribute.This flotador resuelto mi problema para cualquier persona que tal vez experimentando los mismos problem.Its un buen lugar para empezar a comprobar.

Respondida el 14/11/2017 a las 13:30
fuente por usuario

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more