Geocoder, s gem near methode werkt niet op rails 5

stemmen
0

Geprobeerd om de geocoder gem gebruiken om locaties met behulp van de geocoders methode in de buurt voor het vinden van bepaalde locaties in de buurt van een aantal punten te vinden.

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

einde

Dat is de code die ik probeer te lopen, is het resultaat een lege array, zelfs wanneer de locaties in de buurt binnen de opgegeven parameters aanwezig zijn. Wanneer ik probeer om de code direct in de rails console met echte points.eg draaien.

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

Ik heb geen fout gegenereerd krijgen, maar de output ik krijg is minder dan leesbaar of comprehensible.The uitvoer is:

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

Alle hulp wordt zeer op prijs gesteld.

De vraag is gesteld op 13/11/2017 om 20:29
bron van user
In andere talen...                            


1 antwoorden

stemmen
0

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

Had gespaard mijn coördinaten in de database met de string data-type dat verkeerd is, moeten de coördinaten worden opgeslagen met de float data attribute.This mijn probleem opgelost voor iedereen dat misschien het ervaren van de dezelfde problem.Its een goede plek om te beginnen met het controleren.

antwoordde op 14/11/2017 om 16:30
bron van user

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