Статья

Дополнение к Google Geolocation API

Не секрет, что Google Geolocation API, который может предоставлять вебсайтам геолокационные данные на основе IP адреса, зачастую не показывает результаты даже для развитых стран. На запрос клиента выдается Null.
Здесь предлагается небольшое дополнение к Google API.

В своем проекте Вы просто вставляете вызов маленького скрипта:
<script type="text/javascript" src="http://api.wipmania.com/wip.js"></script>
В нем содержится только один объект WIPlocation, формат которого совпадает с google.loader.ClientLocation

Далее добавить в коде конструкцию вида:
if (!google.loader.ClientLocation) {
 google.loader.ClientLocation = WIPlocation;
}

Теперь, если Google не смог определить местоположение, вместо "Неизвестно" Вы получите страну посетителя.

Ограничений на это API по количеству запросов в день нет.

Формат google.loader.ClientLocation описан здесь

Объект WIPlocation имеет еще одно свойство:
WIPlocation.zoom - масштаб для данной страны, который можно использовать при создании карты:
map.setCenter(new google.maps.LatLng(google.loader.ClientLocation.latitude, google.loader.ClientLocation.longitude), WIPlocation.zoom);