Phonegap watchPosition测量距离和触发事件

时间:2015-04-03 16:42:09

标签: javascript jquery cordova geolocation phonegap-plugins

我正在开发一个简单的jQuery / Phonegap应用程序,我正在使用watchPosition在距离当前位置和某个偏远位置之间不断计算。这很好用,但这是我的问题。当距离距离该位置不到一英里时,我想触发一个事件(函数)。我现在拥有它的方式只要距离不到一英里就会继续触发事件。我能做些什么来告诉" watchPosition只触发一次并继续观看我的位置

我包含了我认为代码的相关部分供您参考。

watchPosition的成功部分:

var remoteLat = xx.xxxx;
var remoteLng = xx.xxxx;

function onSuccess(position) {
var myLat = position.coords.latitude;
var myLng = position.coords.longitude;
var distancia = gps_distance(myLat, myLng, remoteLat, remoteLng);

if (distancia < 1) {
    alert('Almost There');
    playSound();
}

}

距离计算功能:

function gps_distance(lat1, lon1, lat2, lon2) {

var R = 3959; // use 3959 for miles or 6371 for km
var dLat = (lat2 - lat1) * (Math.PI / 180);
var dLon = (lon2 - lon1) * (Math.PI / 180);
var lat1 = lat1 * (Math.PI / 180);
var lat2 = lat2 * (Math.PI / 180);

var a = Math.sin(dLat / 2) * Math.sin(dLat / 2) + Math.sin(dLon / 2) * Math.sin(dLon / 2) * Math.cos(lat1) * Math.cos(lat2);
var c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));
var d = R * c;

return d;
}

如果需要更多代码,请告知我们。我还想赞扬之前提出的有关计算距离Link的问题。谢谢!

1 个答案:

答案 0 :(得分:2)

只需使用标记即可跟踪警报。

var alerFlag = true;
if (distancia < 1 && alerFlag == true) {
    alert('Almost There');
    playSound();
    alerFlag = false;
}else{
    alerFlag = true; // This is for whenever you go greater than 1 mi
}