Я разрабатываю простое приложение jQuery/Phonegap, и я использую watchPosition для постоянного расчета расстояния между текущим местоположением и некоторым удаленным местом. Это работает отлично, но это моя проблема. Я хотел бы вызвать событие (функцию), когда расстояние меньше мили от этого места. То, как я это делаю прямо сейчас, будет продолжать запускать мероприятие, пока расстояние меньше мили. Что я могу сделать, чтобы «рассказать» watchPosition, чтобы вызвать событие только один раз и продолжить просмотр моей позиции?Phonegap 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. Благодаря!
Почему вы не используете варибал, чтобы убедиться, что ваше событие станет неуместным, когда расстояние падает ниже мили? – Blauharley