Как получить коды стран ISO 3166 на основе координат долготы и широты

Я работаю над приложением React, и мне нужно получить коды стран ISO 3166 на основе широты и долготы. Я хочу использовать эти коды стран в API OpenWeather.

В настоящее время у меня есть специальный крючок useGeoLocation, который предоставляет мне координаты широты и долготы. Вот код:

// useGeoLocation.js
import { useEffect, useState } from "react";

const useGeoLocation = () => {
  const [location, setLocation] = useState({
    loaded: false,
    coordinates: { lat: "", lng: "" },
  });

  const onSuccess = (location) => {
    setLocation({
      loaded: true,
      coordinates: {
        lat: location.coords.latitude,
        lng: location.coords.longitude,
      },
    });
  };

  const onError = (error) => {
    setLocation({
      loaded: true,
      error,
    });
  };

  useEffect(() => {
    if (!("geolocation" in navigator)) {
      onError({
        code: 0,
        message: "Geolocation not supported",
      });
    }
    navigator.geolocation.getCurrentPosition(onSuccess, onError);
  }, []);

  return location;

};

экспортировать useGeoLocation по умолчанию;

Я хотел бы знать, есть ли какие-либо альтернативные решения для получения кодов стран ISO 3166, не полагаясь на внешние API, такие как API геокодирования Google Maps. Существуют ли какие-либо автономные базы данных или сторонние библиотеки, которые могут помочь с обратным геокодированием?

Любые предложения или рекомендации будут с благодарностью приняты. Спасибо!

Вы можете посмотреть номинатим , это FOSS, основанный на данных OpenStretMap.

Riwen 07.06.2024 09:49

«Я хочу использовать эти коды стран в API OpenWeather» — зачем именно? Поскольку API уже может принимать широту и длину в качестве параметров, я не уверен, для чего вам нужен код страны. Или какой код страны вы бы вообще ожидали получить, если бы я использовал ваше приложение на круизном лайнере посреди океана...?

CBroe 07.06.2024 13:17
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
2
52
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Чтобы получить код страны, вы можете легко найти набор данных (csv/json) в Google с кодом страны и широтой/долготой. Затем в вашем приложении:

  • Создайте файл json, отображающий полученный набор данных, проиндексированный по его геохешу.
  • получить геохеш координат пользователя
  • сопоставляет начало геохеша с индексированным набором данных, чтобы вернуть код страны.

Надеюсь, это вам поможет.

Спасибо, что нашли время ответить на мой вопрос. Ваше объяснение расчета геохеша для координат пользователя и сопоставления его с индексированным набором данных было ясным и полезным.

Abdulamlek 08.06.2024 10:06

Другие вопросы по теме