То, что я собираюсь сделать, это получить мое местоположение и другое местоположение статического места на картах Google. Что я собираюсь сделать, это когда мое местоположение находится внутри этого радио, отправьте мне сообщение, что я нахожусь в этом месте. Кто-нибудь знает какой-либо метод, который облегчает эту работу?
, Чтобы работать с нею posiciГіn человека, использует api GeoLocation HTML5.
EspecГ-ficamente, чтобы одна держится monitoreando posiciГіn, использует mГ©todo watchPosition , cuyan наличие ты был должен проверять в browser, но сегодня в dГ - в почти все выполняют .
, призвав ты pedirГЎ разрешение, чтобы знать ты posiciГіn
navigator.geolocation.watchPosition(
pos => {
let {coords: {latitude, longitude} = {}} = pos;
console.log({latitude, longitude});
},
err => {
console.warn('Error en el localizador',err);
},
{timeout: 30000, maximumAge: 60000}
);
Ошибка gatillarГЎ, когда иссякнет timeout, когда человек откажет тебе в доступе в Ваш ubicaciГіn (или headers сайта блокировали разрешение из-за Феатуре Полиси )
, Выборы, как timeout и maximumAge estГЎn документируемые в PositionOptions
Si твоя идея - monitorear до тех пор, пока человеку не удастся в сектор, не querrГЎs оставаться alertГЎndolo как только entrГі в Г©l, asГ - который ты должен думать о способе снимать watcher.
Для этого, когда ты объявляешь watcher, ты получаешь идентификацию, которую ты можешь использовать, чтобы "это убивать" когда уже он выполнит Вашу работу. У
let listenerId;
listenerId = navigator.geolocation.watchPosition(...);
// Cuando ya no lo quiero tener escuchando
navigator.geolocation.clearWatch(listenerId);
Google есть одна librerГ - в функций geomГ©tricas, который ты можешь просить как дополнительно, когда ты включаешь ее librerГ - в: (где он говорит libraries=geometry)
<script src="https://maps.googleapis.com/maps/api/js?v=quarterly&libraries=geometry&key=<tu_key>"></script>
С этой librerГ - в в области имен, ты имеешь доступ в нее funciГіn computeDistanceBetween
google.maps.geometry.spherical.computeDistanceBetween(puntoA,puntoB)
Одна из твоих точек установлена. Давайте говорить, что есть широта у 20 и длины 30:
const puntoFijo = new google.maps.Latlng(20,30);
Тогда сейчас, когда watchPosition ответит тебе, ты делаешь ее verificaciГіn:
let listenerId;
listenerId = navigator.geolocation.watchPosition(
pos => {
let {coords: {latitude, longitude} = {}} = pos,
actual = new google.maps.Latlng(latitude,longitude),
distancia = google.maps.geometry.spherical.computeDistanceBetween(puntoFijo,actual);
if(distancia<1000) { // 1km
alert('estás a menos de un kilómetro');
navigator.geolocation.clearWatch(listenerId);
}
console.log({latitude, longitude});
},
err => {
console.warn('Error en el localizador',err.code, err.message);
},
{timeout: 30000, maximumAge: 60000}
);
, Если ты не хочешь отобразить это в карте, не необходим прибегать к Google Maps. Ты это можешь делать например с @turf/distance , часть suite TurfJS