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.













