Как определить месторасположение пользователя и источник, посредством которого оно было найдено(gps, wifi, ip)?
По ip лучше точно не определить.
Вообще ip я думаю штука не для место-положения.
Разные базы данных показывают один и тот же ip в другие регионы, и это можно легко понять.
Например я купил ноутбук и пользовался им неделю в Москве, потом перешёл в Санкт-Петербурге.
Большинство баз данных будут показывать  что я нахожусь в Москве...
Надеюсь поняли в чём суть.
HTML5 geolocation API углубляйтесь как оно работает может что и выйдет. Есть ли у них метод который показывает источник или используя косвенные данные по которым можно ли определить источник. Определить что дынные на основе ip достаточно таки легко. Нужно знать какая база ип для этого используются и сверить полученыe данные с ней для определенного ип если кординаты совпадают скорей всего это определения по ип.
Вот может поможет https://developer.mozilla.org/ru/docs/Web/API/Geol...Firefox включает поддержку обнаружения вашего местонахождения на основании информации о вашем WiFi, используя Google Location Services. В соглашении между Firefox и Google утвержден обмен данными, включая точку доступа WiFi, токен доступа (что-то похожее на 2-недельные cookie), и пользовательский IP адрес. Для дополнительной информации, пожалуйста, ознакомьтесь с Политикой Конфиденциальности Mozilla и Политикой Конфиденциальности Google, которые подробно объясняют, как эти данные могут быть использованы.