Ваш ошибка обратного вызова когда-либо срабатывает? Если у вас его нет, попробуйте добавить его. Если он никогда не срабатывает, вы можете установить тайм-аут для своей функции, чтобы, если он не получил разрешения в течение определенного периода времени, отображать уведомление.
Поскольку errorCallback никогда не срабатывает, если geo отключен, создайте оболочку для функции, которая создаст время ожидания для другой функции. Если какой-либо из обратных вызовов к API-интерфейсу срабатывает, удалите установленное время ожидания до его запуска.
var timeOutId;
function disabledGeoHandler(){...}
function show_map() {
clearTimeout(timOutId);
...
}
function show_map_error() {
clearTimeout(timOutId);
...
}
function lookup_location() {
timeOutId = setTimeout(disabledGeoHandler, 1000);
navigator.geolocation.getCurrentPosition(show_map, show_map_error);
}
На самом деле, вы можете просто использовать geo.js