Как геокодировать адреса по gmaps4rails и сохранять координаты в массиве? - PullRequest
2 голосов
/ 15 ноября 2011

Я использую гем mongoid_special вместо mongoid_geo .Главный вопрос: как геокодировать с gmaps4rails введенными местами и сохранять координаты, такие как lat и lng, в правых mongoid_special полях массива?Я предсказываю много ассоциаций для координат.Иллюстративные материалы:

/haml view fields (autocompleted with google places)/
= f.text_field :from, :id => 'from'
= f.text_field :waypoints, :id => 'waypoints'
= f.text_field :to, :id => 'from'

class Trip
  include Gmaps4rails::ActsAsGmappable
  include Mongoid::Document
  include Mongoid::Spacial::Document

  field :from, :type => String
  field :waypoints, type => String
  field :to, type => String

  field :from_coordinate, type: Array, spacial: {lat: :latitude, lng: :longitude, return_array: true }
  field :to_coordinate, type: Array, spacial: {lat: :latitude, lng: :longitude, return_array: true }

  embeds_many :coordinates
end

class Coordinates
  include Mongoid::Document
  include Mongoid::Spacial::Document

  field :coordinates, type: Array, spacial: {lat: :latitude, lng: :longitude, return_array: true }

  embedded_in :trip
end

Еще один вопрос: как получить обратный геокод из этих полей и отобразить данные в виде направления Google?

РЕДАКТИРОВАТЬ Спасибо за подсказку, мое решение для поля ниже, с остальными я могу как-то справиться.

before_save :from

def from=(from)
   self.from_coordinate = Gmaps4rails.geocode(from).first
end

1 Ответ

4 голосов
/ 16 ноября 2011

Вот что я предлагаю:

  • Чтобы получить данные так, как вы хотите, создайте свой собственный фильтр before_save и используйте метод Gmaps4rails.geocode , описанный здесь .

  • Чтобы отобразить направление, см. Здесь

  • обратное геокодирование недоступно в gmaps4rails

...