Geocoder, s Juwel in der Nähe Methode funktioniert nicht auf Schienen 5

stimmen
0

Versucht, das Geocoder Juwel zu verwenden Orte zu finden, die geocoders Methode in der Nähe für die Suche nach bestimmten Orten in der Nähe von bestimmten Punkten verwenden.

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

Ende

Das ist der Code, den ich zu laufen bin versucht, es gibt eine leere Array selbst dann, wenn die Orte in der Nähe innerhalb der spezifizierten Parameter vorhanden sind. Wenn ich versuche, den Code direkt in den Schienen Konsole mit echten points.eg zu laufen.

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

Ich erhalte keine Fehler erzeugt aber der Ausgang i erhalten weniger als lesbar oder comprehensible.The Ausgabe lautet:

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

Jede Hilfe wird sehr geschätzt.

Veröffentlicht am 13/11/2017 um 20:29
quelle vom benutzer
In anderen Sprachen...                            


1 antworten

stimmen
0

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

Habe meine Koordinaten in der Datenbank mit dem String-Datentyp gespeichert bis der falsch ist, sollten die Koordinaten mit dem Schwimmer Daten attribute.This mein Problem gelöst für alle, die vielleicht erleben die gleichen problem.Its einen guten Anfang Überprüfung gespeichert werden.

Beantwortet am 14/11/2017 um 16:30
quelle vom benutzer

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