docs: def to_grid_locator(latitude, longitude, precision='square'):
      """Calculate Maidenhead locator from latitude and longitude.
  
      Args:
          latitude (float): Position's latitude
          longitude (float): Position's longitude
          precision (str): Precision with which generate locator string
  
      Returns:
          str: Maidenhead locator for latitude and longitude
  
      Raise:
          ValueError: Invalid precision identifier
          ValueError: Invalid latitude or longitude value
      """
      if precision not in ('square', 'subsquare', 'extsquare'):
          raise ValueError('Unsupported precision value %r' % precision)
  
      if not -90 <= latitude <= 90:
          raise ValueError('Invalid latitude value %r' % latitude)
      if not -180 <= longitude <= 180:
          raise ValueError('Invalid longitude value %r' % longitude)
  
      latitude += 90.0
      longitude += 180.0
  
      locator = []
  
      field = int(longitude / LONGITUDE_FIELD)
      locator.append(chr(field + 65))
      longitude -= field * LONGITUDE_FIELD
  
      field = int(latitude / LATITUDE_FIELD)
      locator.append(chr(field + 65))
      latitude -= field * LATITUDE_FIELD
  
      square = int(longitude / LONGITUDE_SQUARE)
      locator.append(str(square))
      longitude -= square * LONGITUDE_SQUARE
  
      square = int(latitude / LATITUDE_SQUARE)
      locator.append(str(square))
      latitude -= square * LATITUDE_SQUARE
  
      if precision in ('subsquare', 'extsquare'):
          subsquare = int(longitude / LONGITUDE_SUBSQUARE)
          locator.append(chr(subsquare + 97))
          longitude -= subsquare * LONGITUDE_SUBSQUARE
  
          subsquare = int(latitude / LATITUDE_SUBSQUARE)
          locator.append(chr(subsquare + 97))
          latitude -= subsquare * LATITUDE_SUBSQUARE
  
      if precision == 'extsquare':
          extsquare = int(longitude / LONGITUDE_EXTSQUARE)
          locator.append(str(extsquare))
  
          extsquare = int(latitude / LATITUDE_EXTSQUARE)
          locator.append(str(extsquare))
  
      return ''.join(locator)