Geocoder, s gioiello vicino metodo non funziona su rotaie 5

voti
0

State cercando di utilizzare la gemma geocoder per trovare posizioni utilizzando il metodo geocoder vicino per la ricerca di determinate località vicino ad alcuni punti.

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

fine

Questo è il codice che sto cercando di eseguire, restituisce un array vuoto anche quando le altre città limitrofe entro i parametri specificati sono presenti. Quando si tenta di eseguire il codice direttamente nella console rotaie con vera points.eg.

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

Non ottengo alcun errore generato ma l'uscita che ottengo è meno leggibile o comprehensible.The output è:

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 []> 

Qualsiasi aiuto sarà molto apprezzato.

È pubblicato 13/11/2017 alle 20:29
fonte dall'utente
In altre lingue...                            


1 risposte

voti
0

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

Aveva salvato le mie coordinate nel database con i dati di tipo stringa, che è sbagliato, le coordinate devono essere salvati con i dati attribute.This galleggiante Ha risolto il problema per tutti coloro che forse vivendo gli stessi problem.Its un buon posto per avviare il controllo.

Risposto il 14/11/2017 a 16:30
fonte dall'utente

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