DNS based approach is the best since this is transparent to both your users & your applications.
One thing to keep in mind reg. DNS based approach is that you need to make sure your data is replicated. Eg: if a user travels & now from the new region he falls in a new datacenter & finds that his data is missing. This is no good. So make sure you have strong data replication across all your datacenters. Here's an example of DNS Routing provider