rails3 как узнать конкретный город из подробного адреса в гугл карте - PullRequest
1 голос
/ 17 августа 2011

этот URL имеет демо http://gmaps4rails.heroku.com/locations

когда мы даем подробный адрес, такой как "9 Rue du Muret, Marseille" поэтому на карте Google он покажет точку,

теперь я хочу через адрес получить конкретный город "Марсель" не содержит улицу, только название города,

есть ли способ реализовать это?

Ответы [ 2 ]

2 голосов
/ 18 августа 2011

Я думаю, если я понимаю проблему, это может быть правильным решением, которое вы ищете Данная модель с известным адресом автоматически выбирает компоненты адреса и сохраняет их в отдельных атрибутах:

geocoded_by :address do |obj,results|
if geo = results.first
  obj.city    = geo.city
  obj.zipcode = geo.postal_code
  obj.country = geo.country_code
end
end
after_validation :geocode

Каждый объект Geocoder :: Result, result, предоставляет следующие данные:

result.latitude - float
result.longitude - float
result.coordinates - array of the above two
result.address - string
result.city - string
result.state - string
result.state_code - string
result.postal_code - string
result.country - string
result.country_code - string

Если вы знакомы с результатами, возвращаемыми используемой вами службой геокодирования, вы можете получить доступ к еще большему количеству данных, но вам нужно быть знакомым с конкретным объектом Geocoder :: Result и его структурой. ответов вашей службы геокодирования.

Thx

2 голосов
/ 18 августа 2011

Это так же просто, как сделать:

  acts_as_gmappable :callback => :save_country 

  def save_country(data)
    #what you need  to do here
  end

data будет содержать полный хэш от Google. в вашем примере это выглядит так:

address_components:

  • long_name: "9" типов:
    • street_number short_name: "9"
  • длинное имя: Rue du Muret, типы:
    • имя маршрута: Rue du Muret
  • длинное имя: Les Amavaux типы:
    • район
    • политическое короткое имя: Les Amavaux
  • длинное_имение: 14e Типы округов:
    • sublocality
    • политическое короткое имя: 14e округ
  • длинное_имя: Марсельские типы:
    • местонахождение
    • политическое короткое имя: Марсель
  • long_name: Буш-дю-Рон, типы:
    • administrative_area_level_2
    • политическое короткое имя: "13"
  • long_name: "Прованс-Альпы-C \ xC3 \ xB4te d'Azur" типы:
    • administrative_area_level_1
    • политическое короткое имя: PACA
  • long_name: Типы Франции:
    • страна
    • политическое короткое имя: FR
  • long_name: "13014" типы:
    • postal_code short_name: "13014", типы:
  • street_address геометрии: расположение: lng: 5.3805084 широта: 43,3315919 границ: к северо-востоку: lng: 5.3805246 широта: 43,3315919 к юго-западу: lng: 5.3805084 lat: 43.331585 location_type: RANGE_INTERPOLATED область просмотра: к северо-востоку: lng: 5.3818654802915 широта: 43,3329374302915 к юго-западу: lng: 5.3791675197085 lat: 43.3302394697085 отформатированный_адрес: 9 Rue du Muret, 13014 Марсель, Франция
...