Опции
$lat = '25.7742658'; $lng = '-80.1936589'; $miles = 30;
запрос
SELECT *, ( 3959 * acos( cos( radians($lat) ) * cos( radians( lat ) ) * cos( radians( lng ) - radians($lng) ) + sin( radians($lat) ) * sin( radians( lat ) ) ) ) AS distance FROM locations HAVING distance < $miles ORDER BY distance LIMIT 0, 20
У меня есть таблица базы данных с 4 столбцами:
Я использую запрос сверху, чтобы вернуть места, находящиеся в пределах заданного количества миль от указанных координат. Кажется, это работает, но я не уверен, насколько это точно. Мне любопытно узнать, хорош ли запрос или если у вас есть лучшее решение.
это выглядит как правильный запрос расстояния в большом круге.
что вы касаетесь точности сигнала?
если вы хотите рассчитать расстояние от точки или найти почти место в одной точке в mysql, вы можете использовать «Пространственные функции MySQL», но это разрешено в MySQL 5.6. для получения дополнительной информации вы можете прочитать эту статью:
или этот PDF: