Проблема юзабилити для navigator.geolocation: как узнать, запрашивается ли у пользователя местоположение? - PullRequest
2 голосов
/ 28 октября 2011

Имеет ли HTML-код navigator.geolocation обработчик событий для "В настоящее время спрашивает пользователя, поделится ли он своим местоположением"?

Я хотел бы показать текст, инструктирующий пользователя поделиться своим местоположением , еслии только если их фактически просят поделиться своим местоположением.

В настоящее время у меня есть этот код, но он не работает.

В первый раз это выглядит гладко, но во второй раз (когда браузер знает, что это доверенный сайт, поэтому не спрашивает пользователя о том, чтобы поделиться своим местоположением), «Поделиться своим местоположением» быстро мигает, когдастраница загружается, а затем исчезает за картой.

    // map.js
    function gpsSuccess() { 
        // We have a location - although we don't know whether this is 
        // because the user has already agreed to share with this domain,
        // or whether they have just this second been asked. 
        $('#sharelocation').hide();
        // load map, etc
    }
    if (navigator.geolocation) {
        watchId = navigator.geolocation.watchPosition(gpsSuccess, gpsFail);
    }   

    // map.html
    <div id="sharelocation">Share your location</div>
    <div id="map" class="hidden"></div>

Любые предложения о том, как можно дать пользователю некоторые инструкции в теле страницы тогда и только тогда, когда его фактически просят поделиться своим местоположением?

Ответы [ 2 ]

0 голосов
/ 02 ноября 2011

Похоже, у вас может возникнуть проблема с синхронизацией с небольшой задержкой между getCurrentPosition и вашим обратным вызовом. Что если вы задержите шоу на секунду или около того? (Я не знаю, что такое специфичный для jquery метод). Сохраняйте ссылку на задачу, чтобы в gpsSuccess вы могли вызывать clearTimeout вместе с ней.

0 голосов
/ 29 октября 2011

Я бы не стал показывать сообщение «Поделиться местоположением» до тех пор, пока не будет выполнен обратный вызов сбоя.

function gpsFail() {
  $('#sharelocation').show();
}

Вы можете включить сообщение в блок совместного использования, объясняющее, как включить совместное использование местоположениябудем делать с информацией и пр.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...