2012-06-06 4 views
2

Я играю с {x} api, пытаясь создать правило, которое показывает уведомление о том, где вы находитесь (и, возможно, ссылку на открытые карты Google?) Каждый раз, когда вы припарковываете свой автомобиль (когда вы идете от езды до ходьба/стоя на месте). Я видел это в демо-ролике на {x}, но я не нашел этого правила, поэтому решил, что попробую сделать это сам, просто для удовольствия.Javascript: Получить текущее местоположение GPS, используя {x} api?

У меня возникли проблемы с получением текущих координат gps, хотя я не могу понять, как использовать местоположение api.

Вот что я получил до сих пор:

device.modeOfTransport.on('changed', function(signal) { 
    if (signal.previous === 'driving' && (signal.current === 'walking' || signal.current === 'atrest')) { 

    } 
}); 

Если какие-либо JavaScript мастера из там могли бы взглянуть на апи это было бы здорово. Вот место апи:

https://www.onx.ms/#apiPage/location

ответ

2

Похоже modeOfTransportchanged обработчик не подает вам информацию о местоположении непосредственно. (Почему? Вероятно, потому что modeOfTransport можно утверждать только с помощью телеметрии только с акселерометром, поэтому GPS даже не задействован.) Вам нужно будет создать и запустить locationListener в вашем обработчике и использовать информацию о местоположении, которая подается на обработчик этого слушателя.

Например, вы можете попробовать следующее (которое я собрал вместе, более или менее, из копии и пасты из документации).

device.modeOfTransport.on('changed', function(signal) { 
    if (signal.previous === 'driving' && (signal.current === 'walking' || signal.current === 'atrest')) { 
     var listener = device.location.createListener('GPS', 5000); 
     listener.on('changed', function (signal) { 
      console.info('Lat: ' + signal.location.latitude); 
      console.info('Lon: ' + signal.location.longitude); 
      listener.stop(); 
     }); 
     listener.start(); 
    } 
}); 
+0

Я полагал, что это нужно было бы сделать несколько иначе, я просто не был уверен, как его собрать. Я точно не знаю, как это работает. Интервал 5000, это неуместно? Поскольку слушатель будет остановлен при первом запуске, так? Или он будет ждать 5 секунд до его запуска? Если это так, то установить его на 0 будет разумнее? Спасибо! – qwerty

+0

@qwerty Документация не совсем понятна при запуске обработчика местоположения, но да - я ожидал бы, что он будет вызываться один раз, а затем остановится. Кроме того, я предполагаю, что все это выполняется в одном потоке (поскольку они, похоже, хотят обслуживать веб-разработчиков), что также предполагает, что даже если несколько событий были поставлены в очередь для вызова вашего обработчика, они будут заблокированы, а затем проигнорированы с тех пор вы останавливаете слушателя после первого вызова. – cheeken

+0

Ну ладно. Я собираюсь ехать! Спасибо за помощь! – qwerty

Смежные вопросы