Despite I agree that GPS location is the best, but most website are still accesed from desktop or laptop devices. Laptops can figure out an approximate location based on wireless networks, but the user have to give his consent that his location is traced. I bet that 50% won't do this unless they really know what you do with their location. IF you want to trace it to give him differential content or targeted ads then he probably won't accept.
If you have a service that need exact location then you can ask for their permission, if not, then they can leave as your service is based on the location.
If you want to know their location for other purpose: content, ads, statistics, then the best way is to use a geolocation API, so you don't have to hassle with all the database thing. I've noticed that the ipgp geolocation API to be the most accurate: http://www.ipgp.net/ip-address-geolocation-api/