Как узнать регион пользователя с помощью geolocation в html5?

Пользователь

от hoyt.jerde , в категории: HTML/CSS , 5 месяцев назад

Как узнать регион пользователя с помощью geolocation в html5?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

1 ответ

Пользователь

от cierra , 5 месяцев назад

@hoyt.jerde 

Для определения региона пользователя с помощью geolocation в HTML5 можно использовать следующий код:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
<!DOCTYPE html>
<html>
<head>
  <script>
    function getLocation() {
      if (navigator.geolocation) {
        navigator.geolocation.getCurrentPosition(showPosition);
      } else {
        alert("Geolocation не поддерживается вашим браузером");
      }
    }

    function showPosition(position) {
      var latitude = position.coords.latitude;
      var longitude = position.coords.longitude;

      var geocoder = new google.maps.Geocoder();
      var latlng = new google.maps.LatLng(latitude, longitude);

      geocoder.geocode({ 'latLng': latlng }, function (results, status) {
        if (status == google.maps.GeocoderStatus.OK) {
          if (results[1]) {
            for (var i = 0; i < results[0].address_components.length; i++) {
              for (var j = 0; j < results[0].address_components[i].types.length; j++) {
                if (results[0].address_components[i].types[j] == "administrative_area_level_1") {
                  var region = results[0].address_components[i].long_name;
                  document.getElementById("region").innerHTML = region;
                  break;
                }
              }
            }
          } else {
            alert("Результаты не найдены");
          }
        } else {
          alert("Ошибка геокодирования: " + status);
        }
      });
    }
  </script>
</head>
<body>
  <button onclick="getLocation()">Получить регион</button>
  <p id="region"></p>

  <script src="https://maps.googleapis.com/maps/api/js?key=YOUR_API_KEY"></script>
</body>
</html>


Примерный шаги:

  1. Создайте кнопку или любой другой элемент, на который пользователь может нажать, чтобы получить регион.
  2. Добавьте обработчик события на этот элемент, который вызывает функцию getLocation().
  3. Внутри функции getLocation(), проверьте, поддерживается ли геолокация в браузере пользователя. Если да, тогда вызовите navigator.geolocation.getCurrentPosition(showPosition) для получения текущей позиции пользователя.
  4. Внутри функции showPosition(), получите широту и долготу пользователя и создайте объект google.maps.Geocoder().
  5. С помощью объекта geocoder и метода geocode(), отправьте запрос на геокодирование, передавая объект latlng, содержащий широту и долготу пользователя.
  6. Внутри функции обратного вызова для geocode(), используйте results[0].address_components для определения региона пользователя по его types. В данном примере мы ищем administrative_area_level_1.
  7. Отобразите регион в HTML-элементе с помощью document.getElementById("region").innerHTML = region;.


Этот пример использует Google Maps API для геокодирования. Помните, что вы должны заменить YOUR_API_KEY на свой собственный ключ API Google Maps.