[Geocoder] Géolocalisation du visiteur
Bonjour / Bonsoir à tous !
Je suis actuellement en train de developper un site web permettant d'afficher des magasins sur une Google Map.
Je le fais avec la gem GeoCoder et je n'ai pas de problème pour tous les afficher sur la carte.
Cependant, je voudrais récupérer l'adresse ip du visiteur afin d'obtenir sa position et n'afficher que les magasins présents dans un rayon de X kilomètres autour de lui.
Ma question est donc la suivante : connaissez-vous un moyen de géolocaliser ce visiteur via son adresse IP via GeoCoder ?
Voici mon controller qui affiche tous les magasins:
Code:
1 2 3 4 5 6 7 8 9
|
def index
@shops = Shop.all
@hash = Gmaps4rails.build_markers(@shops) do |shop, marker|
marker.lat shop.latitude
marker.lng shop.longitude
marker.infowindow shop.name
end
end |
Et celui ou j'essaye de localiser le visiteur :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
|
def index
result = request.remote_ip
if request.remote_ip == '::1'
# Codage d'une adresse ip en dur afin de pouvoir tester
result = '63.136.167.174'
end
@shops = Shop.all
@hash = Gmaps4rails.build_markers(@shops) do |shop, marker|
# Le problème intervient à la ligne suivante
if Geocoder::Calculations.distance_between(Geocoder.coordinates(result), shop.to_coordinates) < 30
marker.lat shop.latitude
marker.lng shop.longitude
marker.infowindow shop.name
end
end
end |
Mon erreur est : undefined method `lat' for #<Shop:0x007f969b732b28>, ce qui est normal, mais je ne sais pas comment traduire cette adresse :?
Merci d'avance