Google maps API doesn't offer a way to access region/state/country/city data. To highlight a region you have to create your custom overlay (polygon, overlay map type, ...) based on data from other sources.
As you wrote inexact polygons are often used. These polygons are usually hand made approximations, because that's the easiest way to do it. It's rather difficult to find and process region boundary data to get the polygons you need.
There might be other drawbacks in using exact region polygons. Such polygon usually have to contain thousands of points (there are the exceptional cases like US-Canada border or borders between some African countries). Polygons with lots of points might be difficult to process in JavaScript maps API. Therefore custom overlay map type might be more suitable in this case. Unfortunately, it demands much more work to create overlay map type than to create simple google.maps.Polygon
.
Lots of map data (region coordinates and many other data) can be found on OpenStreetMap. You can export the data via their API.
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…