Запрашивать данные гео-локации у пользователя конечно может быть самым точным способом, но есть и альтернативы. Например
bigdatacloud.net. Данный сервис по IP адресу может предоставить его предпологаемое место нахождения, зону обслуживания(т.е территорию на которой он потенциально может быть использован), город, страну и много другое.