class Pumi::DataSource::Geocoder::AbstractGeocoder::Google
def build_result(data)
def build_result(data) province_name_en = find_address_component( data, "administrative_area_level_1" )&.fetch("long_name") province = Pumi::Province.where(full_name_en: province_name_en).first Result.new( name: data.dig("address_components", 0, "long_name"), lat: data.dig("geometry", "location", "lat"), long: data.dig("geometry", "location", "lng"), bounding_box: [ data.dig("geometry", "bounds", "northeast", "lat"), data.dig("geometry", "bounds", "northeast", "lng"), data.dig("geometry", "bounds", "southwest", "lat"), data.dig("geometry", "bounds", "southwest", "lng") ], country_code: find_address_component(data, "country").fetch("short_name").upcase, district_name_en: find_address_component( data, "administrative_area_level_2" )&.fetch("long_name"), types: data["types"], iso3166_2: province&.iso3166_2 ) end
def find_address_component(data, type)
def find_address_component(data, type) data.fetch("address_components").find do |c| c.fetch("types").include?(type) end end