Как я могу использовать геолокацию в моем node.js, чтобы узнать широту и долготу пользовательского устройства - PullRequest
1 голос
/ 09 мая 2020

Добрый день всем, извините за вопрос logi c так как я здесь новенький. Я создаю свое первое полнофункциональное приложение с использованием React и Node. Я думаю о трех подходах, но не уверен, какой из них будет работать лучше всего.

ОДИН ПОДХОД

Я хочу быть может получить широту / долготу пользователя, когда они заполняют форму в интерфейсе и запрашивают доступ к их геолокации через API геолокации. Например, когда пользователь отправляет свой регион и название сообщества, серверная часть вызывает API геолокации getCurrentPosition. Затем возвращенная широта / долгота будет составлять часть данных, которые будут отправлены в базу данных, как показано в извлеченном коде ниже. Но когда я попробовал этот подход, я столкнулся с двумя проблемами. Во-первых, сообщение об ошибке navigator is not defined. Во-вторых, я не знаю, как получить возвращаемое значение широты и долготы и объявить его как константу, чтобы использовать его при создании местоположения. См. Код ниже:

if (navigator.geolocation) {
    navigator.geolocation.getCurrentPosition(success, error);
  } else {
    alert("Your browser is out of fashion. There is no geo location!")
  }

  function success(position) {
    var latitude = position.coords.latitude;
    var longitude = position.coords.longitude 
    console.log(`Your latitude is ${latitude} and your longitude is ${longitude}`)
      return (latitude, longitude);
  }

  function error() {
    alert("Can't detect your location. Try again later.")
  }

Как объявить lat / long как константу вне функции. Некоторые из них:

 const communityName = req.body.communityName;
 const latitude = (success).latitude;
 const longitude = (success).longitude;

ПОДХОД 2

Я загрузил пакет геолокации npm и использую его, как в коде ниже, но получаю сообщение об ошибке, что навигатор не определен . Если я использую этот подход, как я могу определить навигатор и как я могу объявить lat / long как константу вне функции?

const geolocation = require('geolocation');

geolocation.getCurrentPosition(function (err, position) {
    if (err) throw err
    console.log(position)
  })

ПОДХОД 3

Я читал об этом подходе, но не могу найти рабочий пример. Предлагается использовать API геолокации, чтобы получить широту и долготу пользовательского устройства и отправить координаты как часть данных req.body в API серверной части. Если это хороший подход, есть ли учебное пособие, которому я могу следовать?

Пожалуйста, я новичок в Javascript и кодировании, но я добился серьезного прогресса, но это позволило мне заняться моим проектом. Нет ответа - слишком неправильная аренда. В чепухе есть смысл.

1 Ответ

0 голосов
/ 09 мая 2020

navigator.geolocation

Это API, предоставляемый браузерами. Он недоступен для Node.js.

Я загрузил пакет геолокации npm

Это обертывает navigator.geolocation. Он предназначен для написания кода клиентского кода с использованием модулей Node и этапа компиляции, например, предоставляемого Webpack. Он не работает с Node.js.

Предлагается использовать API геолокации, чтобы получить широту / долготу пользовательского устройства и отправить координаты как часть данных req.body в бэкэнд API.

MDN и Google оба предоставляют введение в fetch API для выполнения HTTP-запросов со стороны клиента JavaScript.

Также есть некоторая специфичная для React c информация в React FAQ.

Затем вы можете прочитать данные в другой конечной точке с помощью req.body при условии, что вы настроили подходящее промежуточное ПО для анализа тела.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...