Проверка текстового поля города / страны - PullRequest
4 голосов
/ 27 июня 2010

Мне нужно отслеживать пользователей lat / lng / city / country для моего приложения со следующими двумя требованиями:

1) Получите пользователей lat / lng / city / country автоматически. (Это легко, я могу использовать ip или, если у них есть браузер, который поддерживает геолокацию, даже лучше).

2) Пользователю разрешено настраивать это местоположение (возможно, поиск IP-адреса не дал точного города). Расположение - это текстовое поле произвольной формы (не раскрывающийся список). Когда пользователь вводит новое местоположение, оно должно быть проверено по доступным городам / странам. Если он сравнивается с любым из них, выберите его, а затем получите значение для нового местоположения. (Это то, с чем у меня проблемы)

Также поясним, что это приложение Rails 3, использующее MongoDB. Я ищу один API или базу данных, которые позволили бы мне сделать и (1), и (2). Кто-нибудь делал что-нибудь подобное? Нужны идеи о том, как это сделали другие.

Ответы [ 2 ]

1 голос
/ 27 июня 2010

Я бы порекомендовал Geokit Gem , он отлично справляется с обеспечением внешнего интерфейса для нескольких API геокодирования.Я настоятельно рекомендую придерживаться Yahoo или Google только из-за проблем с целостностью данных.

Существует плагин rails , который добавляет несколько полезных помощников в Activerecord.На данный момент основной проект не совместим с rails 3, но есть как минимум одна ветвь, обновленная для rails 3.

1 голос
/ 27 июня 2010

Ваш вопрос не совсем ясен относительно вашей проблемы. В общем, я бы сделал это так:

  • имеет модель местоположения, которая хранит название местоположения и координаты
  • когда пользователь вводит местоположение, отправьте Ajax-запрос для его поиска
  • если он найден, укажите местоположение в сеансе
  • если он не найден, вернуть список местоположений с одинаковыми именами (в случае опечатки) и позволить пользователю выбрать один из них или придерживаться ввода
  • по завершении ввода введите новое местоположение, если необходимо, и сохраните User.location_id.

Вы можете использовать Google Geocoding API для поиска координат неизвестных мест.

...