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.













