Я так понял есть 2 варианта: определение на стороне сервера, когда у меня есть доступ к БД/сервису определия; и определение на стороне клиента, когда браузер делате аякс запрос на третью-сторону, предоставляющую сервис.
1. Какие преимущества каждого из способов?
2. Есть ли бесплатные или за умеренную цену сервисы?
jeruthadam, maxmind предоставляет физический файл с базой для запуска на своей стороне.
Для онлайн запросов актуален Algolia, там нормальные лимиты. Хотя и у Яндекса есть свой Геокодер