Does screaming and whining result in you giving in just to shut him up? If so, then there's no reason for him to stop. If he acts up in the store, take him home. If he acts up in church, take him out. Let him know ahead of time that if he starts misbehaving, then you're going home and he will go immediately into time out when you get there. If he screams when it's time to leave the park, then tell him before you go to the park that if he does that, there will be no more going to the park for the rest of the week. But you have to stick to it.
As for hitting, that has to be stopped immediately. If you let him hit you now and get away with it, he'll be hitting you when he's older and big enough to hurt you. Not to mention that he will hit other people as well. You don't want him to learn not to hit by having someone else beats the living snot out of him when he takes a swing at the wrong person, and if he develops the habit of hitting, it's only a matter of time before that happens.