rails3 как получить конкретный город по подробному адресу на карте google

этот URL содержит демонстрацию http://gmaps4rails.heroku.com/locations

когда мы даем подробный адрес, такой как «9 Rue du Muret, Marseille», чтобы на карте Google он показывал точку,

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

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


person mlzboy    schedule 17.08.2011    source источник


Ответы (2)


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

  acts_as_gmappable :callback => :save_country 

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

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

адрес_компоненты:

  • long_name: "9" types:
    • street_number short_name: "9"
  • long_name: Rue du Muret types:
    • route short_name: Rue du Muret
  • long_name: Les Amavaux types:
    • neighborhood
    • политическое короткое_имя: Les Amavaux
  • long_name: 14e Arrondissement types:
    • sublocality
    • политическое короткое_имя: округ 14e
  • long_name: Marseille types:
    • locality
    • политическое короткое_имя: Марсель
  • long_name: Bouches-du-Rhone types:
    • administrative_area_level_2
    • политическое короткое_имя: "13"
  • long_name: "Provence-Alpes-C\xC3\xB4te d'Azur" types:
    • administrative_area_level_1
    • политическое короткое_имя: PACA
  • long_name: France types:
    • country
    • политическое короткое_имя: FR
  • long_name: "13014" types:
    • postal_code short_name: "13014" types:
  • street_address геометрия: местоположение: LNG: 5.3805084 LAT: 43.3315919 границы: северо-восток: LNG: 5,3805246 Lat: 43,3315919 юго-запад: LNG: 5,3805084 лат: 43,331585 LOCATION_TYPE: RANGE_INTERPOLATED видового экрана: северо-восток: LNG: +5,3818654802915 Lat: 43,3329374302915 юго-запад: LNG: +5,3791675197085 Lat: 43,3302394697085 formatted_address: 9 Rue du Muret, 13014 Марсель, Франция
person apneadiving    schedule 18.08.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.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, который вы используете, и со структурой вашего геокодирования. ответы службы.

Спасибо

person Vivek Parihar    schedule 18.08.2011