У меня была точно та же проблема, и я почти не нашел в Интернете информации об этом. В книгах вообще ничего нет. Наконец я нашел этот трезвый запрос на stackoverflow и (ха!) Это был последний импульс, который мне был нужен, чтобы создать учетную запись здесь.
И у меня есть частичный ответ, но, увы, не полный.
Прежде всего, осознайте, что значение по умолчанию для getCurrentPosition бесконечно (!). Это означает, что ваш обработчик ошибок никогда не будет вызываться , если getCurrentPosition висит где-то на заднем конце.
Чтобы обеспечить получение тайм-аута, добавьте необязательный третий параметр к своему вызову getCurrentPosition, например, если вы хотите, чтобы пользователь подождал не более 10 секунд, прежде чем дать ему понять, что происходит, используйте:
navigator.geolocation.getCurrentPosition(successCallback,errorCallback,{timeout:10000});
Во-вторых, я испытал совершенно разную надежность в разных контекстах. Здесь дома я получаю ответный звонок в течение секунды или двух, хотя точность низкая.
На работе, однако, я наблюдаю довольно странные изменения в поведении: геолокация работает на некоторых компьютерах все время (за исключением IE, конечно), другие работают только в chrome и safari, но не в firefox (проблема геккона?), Другие работают один раз затем произойдет сбой - и шаблон меняется с часа на час, изо дня в день. Иногда у вас есть «счастливый» компьютер, иногда нет. Возможно, поможет убой коз в полнолуние?
Мне не удалось понять это, но я подозреваю, что внутренняя инфраструктура более неравномерна, чем рекламируется в различных фанатских книгах и веб-сайтах, которые продвигают эту функцию. Мне бы очень хотелось, чтобы они были немного более откровенны в отношении того, насколько ненадежна эта функция, и насколько важна настройка тайм-аута, если вы хотите, чтобы ваш обработчик ошибок работал правильно .
Я пытался преподавать этот материал студентам сегодня, и у меня была неловкая ситуация, когда мой собственный компьютер (на проекторе и нескольких больших экранах) молча давал сбой, тогда как около 80% студентов получали результат почти мгновенно (используя точно такую же беспроводную сеть). Очень трудно решить эти проблемы, когда мои ученики также делают опечатки и другие оплошности, и когда мой собственный компьютер также выходит из строя.
В любом случае, я надеюсь, что это поможет некоторым из вас, ребята. Спасибо за проверку вменяемости!