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:
Et celui ou j'essaye de localiser le visiteur :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
Mon erreur est : undefined method `lat' for #<Shop:0x007f969b732b28>, ce qui est normal, mais je ne sais pas comment traduire cette adresse
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
Merci d'avance
Partager