Как можно отслеживать мою позицию, когда я закрываю свое приложение с помощью Phonegap и jquerymobile
Я использую phonegap, jquerymobile API googlemap, чтобы получить мою текущую позицию и посмотреть мою позицию.
Для этого, когда я обедаю на своей странице карты, моя позиция отображается маркером, и маркер перемещается при движении. Даже если это работает, исключая, когда я закрываю свое приложение (onPause).
Вот мой код (вы можете сказать мне, как я могу его усовершенствовать: о))
$('#home').live("pagebeforeshow", function() {
if($('#googleAPI').length != 0){
navigator.geolocation.getCurrentPosition(function(position){
//showMap('mapHome',position.coords.latitude, position.coords.longitude);// Canvas, lat, long
var latLng = new google.maps.LatLng(position.coords.latitude,position.coords.longitude);
// Google Map options
var myOptions = {
zoom: 17,
//zoomControl : 1,
center: latLng,
mapTypeId: google.maps.MapTypeId.ROADMAP////ROADMAP, SATELLITE, HYBRID and TERRAIN
};
// Create the Google Map, set options
Tracking.mapy = new google.maps.Map(document.getElementById('mapHome'), myOptions);
//addMarker(position.coords.latitude,position.coords.longitude);
},
showError,
{
enableHighAccuracy : true,
maximumAge : 2000
//maximumAge:Infinity
});
}
})
$('#home').live("pageshow", function() {
// Place and move the marker regarding to my position and deplacement
if($('#googleAPI').length != 0){
//var track_id = "me";
Tracking.watch_id = navigator.geolocation.watchPosition(
// Success
function(position){
var lat = position.coords.latitude;
var long = position.coords.longitude;
var latLng = new Array();
latLng[0] = lat;
latLng[1] = long;
//Tracking.myCoordinates.push(lat,long);
Tracking.myCoordinates.push(latLng);
addMarker(lat, long);
},
// Error
showError,
{
frequency: 1000
});
console.log('HW : WatchPosition called. Id:' + Tracking.watch_id);
}else{
Alert.show('The map API has not been loaded. Check for connection and try again. (pagebeforeshow)');
}
})
$('#home').live("pagebeforehide", function() {
if($('#googleAPI').length != 0){
//track_id = "me";
// Stop tracking the user
if (Tracking.watch_id != null) {
navigator.geolocation.clearWatch(Tracking.watch_id);
console.log('HW : WatchPosition cancelled Id:' + Tracking.watch_id);
Tracking.watch_id = null;
}
//navigator.geolocation.clearWatch(Tracking.watch_id);
//Tracking.watch_id = null;
Tracking.myCoordinates = new Array();
}else{
Alert.show('The map API has not been loaded. Check for connection and try again. (pagebeforeshide)');
}
});
Проблема в том, когда я закрываю свое приложение, потому что мне все еще нужно быть внимательным, когда я выхожу за пределы своей геозоны. Затем, несмотря на то, что я не перестаю наблюдать за своей позицией, мне нужно, чтобы она наблюдала, даже если я закрываю свою позицию или если я завтракаю в другом приложении.
Тогда я не знаю, как это сделать, когда я даже позвонил в этот PhoneGap:
document.addEventListener('pause', onPause, false);
function onPause(){}
Должен ли я просто перезапустить мой код часов с другим watch_id?
Любое предложение?
Большое спасибо и счастливого нового года
1 ответ
Я думаю, что вы пытаетесь получить фоновый процесс с помощью телефонной щели. Обсуждение в этой ссылке, кажется, говорит, что это возможно, только если вы напишите плагин для выполнения этой функции. PhoneGap не имеет API, чтобы сделать это из коробки.
Выполнение javascript в фоновом режиме с использованием телефонной щели