Использование геолокации для поиска ближайших событий - PullRequest
0 голосов
/ 23 марта 2020

Я создал приложение Rails с моделью User и моделью Event. Столбцы модели событий включают в себя location_lat и location_long. Я пытался использовать геокодер для получения событий, которые близки к пользователю и не имеют никакого успеха.

В моем файле events.rb у меня есть:

class Event < ApplicationRecord
    has_many :user_event_relationships
    has_many :users, through: :user_event_relationships
    has_and_belongs_to_many :tags
    has_one_attached :picture
    validates :name, :location, :date_to, :date_from, presence: true
    validate :valid_date_range_required
    geocoded_by :location_lat, location_long
    reverse_geocoded_by :location_lat, :location_long

...
...
end

И я ' я пытался получить IP-адрес пользователя, а затем обнаружил, что находящееся поблизости событие выполняет следующее:

@ip = request.location.ip
@curr_loc = Event.near(@ip[2..-1])

Я также добавил проверку того, что когда ip равен :: 1 (когда я работаю локально), он по умолчанию другой IP, и это, кажется, работает. Проблема в том, что когда я пытаюсь использовать Event.near (@ip [2 ..- 1]), Event.near ('Paris') (или любой другой город) или .near в целом, ничего не возвращается. Я не уверен, что я делаю неправильно. Я просмотрел документацию и посмотрел похожие вопросы на этом и других форумах, но не нашел своего ответа. Если бы вы могли помочь или предложить альтернативный способ решения этой проблемы, который был бы оценен. Мой товарищ по команде попробовал функцию javascript, но она работает не так хорошо. Я также подумал об использовании листовки, с которой я сейчас играю.

1 Ответ

0 голосов
/ 24 марта 2020

Я не использовал камень geocoder, но если я правильно понимаю, что вы хотите. Из документации:

Вы также можете найти местоположение IP-адреса:

results = Geocoder.search("172.56.21.89")
results.first.coordinates
=> [30.267153, -97.7430608]

Так что вы можете использовать эти координаты для поиска ближайших событий:

Event.near([30.267153, -97.7430608], 50)              # venues within 50 miles of a point
Event.near([30.267153, -97.7430608], 50, units: :km)  # venues within 50 kilometres of a point

Также попробуйте поискать, например Event.near("Paris, France").

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...