Geocoder, s gem aproape de metoda de lucru pe care nu șine 5

voturi
0

Încercat să folosească bijuterie geocoder pentru a găsi locații utilizând metoda geocoders aproape de a găsi anumite locații în apropiere de anumite puncte.

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

Sfârşit

Acesta este codul am încercat să ruleze, returnează un array gol chiar și atunci când aprop în parametrii specificați sunt prezenți. Când încerc să rulați codul direct în consola cu șine points.eg reale.

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

Nu primesc nici o eroare generată, dar de ieșire I a lua este mai mică decât poate fi citit sau comprehensible.The de ieșire este:

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

Orice ajutor va fi foarte apreciat.

Întrebat 13/11/2017 la 20:29
sursa de către utilizator
În alte limbi...                            


1 răspunsuri

voturi
0

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

Dacă a salvat în sus coordonatele mele în baza de date cu șirul de tip de date, care este greșit, coordonatele ar trebui să fie salvate cu attribute.This de date float a rezolvat problema mea pentru oricine care poate se confruntă cu aceleași problem.Its un loc bun pentru a începe verificarea.

Publicat 14/11/2017 la 16:30
sursa de către utilizator

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