lib/plus_codes/open_location_code.rb
# Converts a latitude and longitude into a Open Location Code(Plus+Codes).
#
# @param latitude [Numeric] a latitude in degrees
# @param longitude [Numeric] a longitude in degrees
# @param code_length [Integer] the number of characters in the code, this excludes the separator
# @return [String] a plus+codes
Converts a latitude and longitude into a Open Location Code(Plus+Codes).
Converts a latitude and longitude into a Open Location Code ( Plus + Codes ) .
def encode(latitude, longitude, code_length = 10)
      raise ArgumentError,
      "Invalid Open Location Code(Plus+Codes) length: #{code_length}" if invalid_length?(code_length)
      latitude = clip_latitude(latitude)
      longitude = normalize_longitude(longitude)
      latitude -= precision_by_length(code_length) if latitude == 90
      lat = (latitude + 90).to_r
      lng = (longitude + 180).to_r
      digit = 0
      code = ''
      while digit < code_length
        lat, lng = narrow_region(digit, lat, lng)
        digit, lat, lng = build_code(digit, code, lat, lng)
        code << SEPARATOR if (digit == SEPARATOR_POSITION)
      end
      digit < SEPARATOR_POSITION ? padded(code) : code
    end
def encode ( latitude , longitude , code_length = 10 ) raise ArgumentError , "Invalid Open Location Code(Plus+Codes) length: #{code_length}" if invalid_length? ( code_length ) latitude = clip_latitude ( latitude ) longitude = normalize_longitude ( longitude ) latitude -= precision_by_length ( code_length ) if latitude == 90 lat = ( latitude + 90 ) . to_r lng = ( longitude + 180 ) . to_r digit = 0 code = '' while digit < code_length lat , lng = narrow_region ( digit , lat , lng ) digit , lat , lng = build_code ( digit , code , lat , lng ) code << SEPARATOR if ( digit == SEPARATOR_POSITION ) end digit < SEPARATOR_POSITION ? padded ( code ) : code end
Converts a latitude and longitude into a Open Location Code(Plus+Codes).
Converts a latitude and longitude into a Open Location Code ( Plus + Codes ) .
None
String
latitude
a latitude in degrees
a latitude in degrees
longitude
a longitude in degrees
a longitude in degrees
code_length
the number of characters in the code, this excludes the separator
the number of characters in the code this excludes the separator