Depending on the situation/client, I generally will do one of the following:
1) Charge them normal rate for travel time, as it is consuming my time. This is the default method.
2) Charge them one rate for work done at your location, and a higher rate for time spent on-site, without charging for the travel.
3) Charge them a daily rate instead of by the hour when travel is required. The daily rate will be based around 8 hours of on-site work, plus an inconvenience fee.
As an example, let's say your normal rate for work is $75 per hour. I would charge people $125 an hour if I'm required to be on-site. This works if the travel doesn't consume my entire day, when clients are within a reasonable driving distance (let's say a commute time of an hour each direction).
If I'm required to fly somewhere, or travel a considerable distance which makes working for other clients difficult/impossible, then I'll charge them a daily rate. The daily rate will generally be something like $125 * 10, but they're free to consume my time for as many hours as they want for the day, but I also charge for travel days. I charge more than 8 hours because of the inconvenience for me. So let's say I'm living in New York, and my client is in Los Angeles, and they want to meet with me on a particular day (in person). The flight from NY to LA is about 5 hours, and so my travel will generally get booked as a flight from NY to LA, arriving in the evening and an overnight stay in a hotel. The second day will be a meeting a flight home. In this case, they pay my travel expenses, plus they have to pay my daily rate for 2 days. If they want me to do some preliminary work or have a dinner meeting with me on the day I arrive, there's no additional charges since they have already paid for the whole day.
This type of system is reasonably easy to explain. I don't give clients the option, I generally decide how I'm going to invoice them, but I will be up-front about it so they are not surprised.