
You might like this website for such training.
http://www.duckhillkennels.com/forums/My Lab is whistle trained to recall and distance sit. I did it mostly myself with some invaluable input from a U.K. gundog sit where I found a reference to North/South fetching. How this works is, two balls, throw one N. as soon as he picks it up throw the other S. Dog has to race past you to get the second ball, thereby planting a note in his brain that back in your direction gets another throw. You go at his pace, don't worry about getting the balls back properly but slowly morph it into a pause by you, a sit by you, a give to you and then you are only throwing one ball. My Lab "got it" in 10 throws. Until this he would "trieve" like mad but failed to "re" as one trainer put it. I later morphed in the whistle the same way. For us recall is three tweets.
My trainer showed me how to whistle sit. I was taught you train the sit first, before the recall, but I forget why, maybe because it's harder? Anyway, his method was so easy. Dog on leash, whistle in mouth. Say SIT through the whistle as you pull up on the leash a wee bit. It'll make a bit of noise which you morph into a full tweet. One tweet for sit for us. Pretty soon all you need is a tweet for sitting beside you.
Then I used a stick to introduce distance. First we sit in front of the stick, many times. Then I have him recall, no whistle recall just yet, oh, maybe that's why. Anyway recall only a few feet to the stick which is between me and him. Tweet just as he gets to the stick. He's been learning to sit just behind the stick, now the only difference is the stick is a bit in front of you. Gradually increase the distance to the stick and to you. Remove the stick, shorten the distance. Gradually increase again. Worked for me. The stick idea is from the first competitive obedience class I took 20 years ago with my first Lab. We used a stick in a similar way for distance downs.
Good luck, we didn't get to directional but I use my hand signals for that. Often I need a distance sit and at a distance he should sit facing me, then I can hand signal to where he should go.