Я хочу интегрировать функциональность геолокации HTML5 в веб-сайт. Вопрос, который у меня есть, – это получение ближайшего города / города в выбранном списке. Сайт поддерживается или продается только в определенном количестве городов и цитируется, поэтому идея заключается в том, что браузер находит свое местоположение и выбирает ближайший город или город. Звучит достаточно просто, но это «нахождение ближайшего», что я могу опустить голову.
Я нашел поток, который помог мне в процессе получения длинного / лат из браузера и превращения его в название города / города, но это не помогает найти ближайший список: Обратное геокодирование с помощью API карт Google и PHP для получения ближайшего местоположения с использованием Lat, Long координат
Существуют ли какие-либо API (желательно в Google), которые найдут ближайшее местонахождение? Я посмотрел и не могу найти такого.
Вы можете найти ближайший город, используя формулу Хаверсина . Следующие функции используются для расчета расстояния между геолокационными координатами и координатами вашего массива
function deg2rad(degrees){ radians = degrees * (Math.PI/180); return radians; } function Haversine(lat1,lon1,lat2,lon2) { deltaLat = lat2 - lat1 ; deltaLon = lon2 - lon1 ; earthRadius = 3959; // in miles 6371 in meters. alpha = deltaLat/2; beta = deltaLon/2; a = Math.sin(deg2rad(alpha)) * Math.sin(deg2rad(alpha)) + Math.cos(deg2rad(lat1)) * Math.cos(deg2rad(lat2)) * Math.sin(deg2rad(beta)) * Math.sin(deg2rad(beta)) ; c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1-a)); distance = earthRadius * c; return distance.toFixed(2); }
Самый простой способ – вычислить расстояние «как ворона» от местоположения пользователя до всех ваших городов, используя формулу haversine или метод computeDistanceBetween для сферической геометрии , и выберите самый маленький.
Если у вас меньше 100 мест, вы можете использовать Матрицу расстояний для определения кратчайшего расстояния, а затем выбрать город с самым коротким результатом.
Я считаю, что самым легким решением является сохранение координат латинского алфавита каждого города или города в базе данных и просто радиусный поиск вокруг местоположения пользователей и получение ближайшего результата.
Взгляните на принятый ответ на этот вопрос.
Поиск базы данных с lat и long by radius с помощью php mysql