Как рассчитать местоположение в радиусе, используя карты Google?

То, что я собираюсь сделать, это получить мое местоположение и другое местоположение статического места на картах Google. Что я собираюсь сделать, это когда мое местоположение находится внутри этого радио, отправьте мне сообщение, что я нахожусь в этом месте. Кто-нибудь знает какой-либо метод, который облегчает эту работу?

0
задан 21.11.2019, 22:48
1 ответ

GeoLocation.watchPosition

, Чтобы работать с нею 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);

CombinГЎndolo с Google Maps

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

0
ответ дан 01.12.2019, 11:02