2015-08-17 6 views
-1

я получил расположение места с этими Широта/Долгота параметрами: 51.4625733, -0,1868911Показать сообщение, когда пользователь близко к месту

Я пытаюсь найти решение JQuery, когда пользователь находится близко от этого места - скажем, 100 метров, тогда должно появиться сообщение/предупреждение.

Я использую этот пример, чтобы получить дистанцию, но он не работает корректно.

function distance(lon1, lat1, lon2, lat2) { 
    var R = 6371; // Radius of the earth in km 
    var dLat = (lat2-lat1).toRad(); // Javascript functions in radians 
    var dLon = (lon2-lon1).toRad(); 
    var a = Math.sin(dLat/2) * Math.sin(dLat/2) + 
     Math.cos(lat1.toRad()) * Math.cos(lat2.toRad()) * 
     Math.sin(dLon/2) * Math.sin(dLon/2); 
    var c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1-a)); 
    var d = R * c; // Distance in km 
    return d; 
} 

/** Converts numeric degrees to radians */ 
if (typeof(Number.prototype.toRad) === "undefined") { 
    Number.prototype.toRad = function() { 
    return this * Math.PI/180; 
    } 
} 

window.navigator.geolocation.getCurrentPosition(function(pos) { 
    console.log(pos); 
    console.log(
    distance(pos.coords.longitude, pos.coords.latitude, 51.4625733, -0.1868911) 
    ); 
}); 

http://jsfiddle.net/ws5kvm1k/

Ваша помощь очень ценится.

+0

Да, это возможно. Что вы пробовали? –

+0

Привет @ClaytonLeis, я ищу решение. Еще не пробовал ничего, кроме того, что получил свою геолокацию и отобразил ее ... Можете ли вы мне посоветоваться или помочь? Очень ценю вашу помощь – qqruza

ответ

0

Я нашел решение этой задачи, поэтому поставлю ее для всех, кто может найти ее полезной.

// convert numeric degress to radians 
toRad = function (value) { 
    return value * Math.PI/180; 
}; 

Equirectangular = function (point1, point2) { 
    var R = 6371; // earth radius in km 
    var x = (toRad(point2.lon) - toRad(point1.lon)) * Math.cos((toRad(point1.lat) + toRad(point2.lat))/2); 
    var y = (toRad(point2.lat) - toRad(point1.lat)); 
    return Math.sqrt(x * x + y * y) * R; 
}; 

// START HERE 

window.navigator.geolocation.getCurrentPosition(function (pos) { 
    pointOne = { 
     lat: pos.coords.latitude, 
     lon: pos.coords.longitude 
    }; 
    pointTwo = { 
     lat: 51.4625733, 
     lon: -0.1868911 
    }; 

    x = Equirectangular(pointOne, pointTwo); 
    d = 10; // in kilometers 

    if (d == x || d > x) { 
     $('body').append('<p><b>you are very close</b><br>' + x); 
    } else { 
     $('body').append('<br>' + x); 
    } 

}); 
Смежные вопросы