Sha256: 6faa5e36a38a1f76c80f9d6023d9e96bb75d394337b09e4b72d1cf0836d70834

Contents?: true

Size: 1.52 KB

Versions: 2

Compression:

Stored size: 1.52 KB

Contents

#= 位置情報

# Rack 化にあわせて gem を見るように
begin
  require 'openssl'
  require 'geokit'
rescue LoadError
end

module Jpmobile
  # 位置情報
  class Position
    if Object.const_defined?(:GeoKit)
      # GeoKitが読み込まれている場合はMappableにする
      include ::GeoKit::Mappable
      def self.acts_as_mappable
      end

      def self.distance_column_name
      end

      def self.lat_column_name
        :lat
      end

      def self.lng_column_name
        :lng
      end
    end
    def initialize
      @lat = nil
      @lon = nil
      @options = {}
    end

    # 度分秒を度に変換する。
    def self.dms2deg(d, m, s)
      d.to_i + (m.to_i.to_f / 60) + (s.to_f / 3600)
    end

    # 日本測地系から世界測地系に変換する。
    def tokyo2wgs84!
      @lat, @lon = DatumConv.tky2jgd(@lat, @lon)
    end

    # 文字列で緯度経度を返す。
    def to_s
      '%s%f%s%f' %
        [
          (@lat > 0) ? 'N' : 'S',
          @lat, (@lon > 0) ? 'E' : 'W',
          @lon
        ]
    end

    # 緯度経度をカンマ区切りで返す
    def ll
      "#{lat},#{lng}"
    end

    # 緯度
    attr_accessor :lat

    # 経度
    attr_accessor :lon

    # 経度
    def lng
      self.lon
    end

    # 経度を設定
    def lng=(l)
      self.lon = l
    end

    # 緯度と経度が一致している場合に +true+
    def ==(other)
      other.lat == self.lat && other.lon == self.lon
    end

    # その他の情報
    attr_accessor :options
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
jpmobile-7.0.3 lib/jpmobile/position.rb
jpmobile-7.0.2 lib/jpmobile/position.rb