Sha256: 2b6454c144e979af1e7adec595e413ce5829393d77c58bf56a7092bb11574cd9

Contents?: true

Size: 798 Bytes

Versions: 1

Compression:

Stored size: 798 Bytes

Contents

require 'csv'
require 'geocoder'

module Kisyo
  class Location
    attr_reader :prefecture_id, :block_id

    def self.distance(lat1, lng1, lat2, lng2)
      Geocoder::Calculations.distance_between([lat1, lng1], [lat2, lng2])
    end

    def self.dms_to_degrees(d, m, s = 0)
      d + m / 60.0 + s / 3600.0
    end

    def self.nearest(lat, lng)
      distances =
        BLOCKS.map do |block|
          la = dms_to_degrees(block[3].to_f, block[4].to_f)
          ln = dms_to_degrees(block[5].to_f, block[6].to_f)

          [distance(lat, lng, la, ln), block]
        end

      block = distances.min_by { |(dist, _)| dist }[1]

      new(block[1], block[2])
    end

    def initialize(prefecture_id, block_id)
      @prefecture_id = prefecture_id
      @block_id = block_id
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
kisyo-0.1.1 lib/kisyo/location.rb