Как написать запрос MySQL, который выбирает все магазины (широты и долготы), ORDER BY ближе к вашей позиции

Я делаю сайт, на котором я должен показать все магазины в списке, отсортированном таким образом, чтобы ближайшие магазины, к текущему местоположению пользователей, приходили первыми, а дальние — позже.
Мне нужен запрос MySQL, который выбирает все магазины из базы данных ORDER BY пользователей текущей позиции.
Я много искал в Google, но не смог найти ни одного запроса, соответствующего моему случаю.

0

Решение

Вы можете попробовать это:

SELECT temp1.* FROM (SELECT s.shop_id, s.shop_name, s.address, 3959 * ACOS( COS( RADIANS( 40.7127 ) ) * COS( RADIANS( s.latitude ) ) * COS( RADIANS( s.longitude ) - RADIANS( 74.0059 ) ) + SIN( RADIANS( 40.7127 ) ) * SIN( RADIANS( s.latitude ) ) ) AS distance FROM shop s) as temp1 WHERE temp1.distance <= 20 ORDER BY temp1.distance

это даст список магазинов в пределах 20 миль.
40,7127 — широта, а 74,0059 — долгота

1

Другие решения

Я думаю, что вы обнаружите, что вам просто нужно получить все хранилища из вашей базы данных (или, возможно, отфильтровать их по чему-то вроде состояния, чтобы создать меньший набор данных), а затем позволить вашему приложению обрабатывать их по расстоянию.

0

Вы должны пойти с IP-адресом магазинов с помощью помощника ip, чтобы найти (хост, страна, город, регион) магазина и отобразить их так, чтобы любой мог найти близлежащие магазины. вы можете найти их из ip

<?php
require_once("userip/ip.codehelper.io.php");

require_once("userip/php_fast_cache.php");

$_ip = new ip_codehelper();

$real_client_ip_address = $_ip->getRealIP();
$visitor_location       = $_ip->getLocation($real_client_ip_address);

$guest_ip   = $visitor_location['IP'];
$guest_country = $visitor_location['CountryName'];
$guest_city  = $visitor_location['CityName'];
$guest_state = $visitor_location['RegionName'];

echo "IP Address: ". $guest_ip. "<br/>";
echo "Country: ". $guest_country. "<br/>";
echo "State: ". $guest_state. "<br/>";
echo "City: ". $guest_city. "<br/>";

?>

Вы также можете найти

$ip             = $visitor_location['IP'];
$Continent_Code     = $$$visitor_location['ContinentCode'];
$Continent_Name     = $visitor_location['ContinentName'];
$Country_Code2      = $visitor_location['CountryCode2'];
$Country_Code3      = $visitor_location['CountryCode3'];
$Country        = $visitor_location['Country'];
$Country_Name       = $visitor_location['CountryName'];
$State_Name         = $visitor_location['RegionName'];
$City_Name      = $visitor_location['CityName'];
$City_Latitude      = $visitor_location['CityLatitude'];
$City_Longitude     = $visitor_location['CityLongitude'];
$Country_Latitude   = $visitor_location['CountryLatitude'];
$Country_Longitude  = $visitor_location['CountryLongitude'];
$Country_Longitude  = $visitor_location['CountryLongitude'];
$LocalTimeZone      = $visitor_location['LocalTimeZone'];
$Calling_Code       = $visitor_location['CallingCode'];
$Population         = $visitor_location['Population'];
$Area_SqKm      = $visitor_location['AreaSqKm'];
$Capital        = $visitor_location['Capital'];
$Electrical         = $visitor_location['Electrical'];
$Languages      = $visitor_location['Languages'];
$Currency       = $visitor_location['Currency'];
$Flag           = $visitor_location['Currency'];
0
По вопросам рекламы [email protected]