В зависимости от кол-ва точек. Если у вас их там мало, и нет проблем просчитать, то используйте функцию расчета расстояния. К примеру примеру, у меня представлена для POINT значений функция, перепишите себе под lat long.
И далее через foreach проверяете необходимые условия.
static function distance($point1, $point2, $unit = 2 ) {
if (!$point2) return null;
if (!$point1) return null;
$point1 = explode(',', $point1);
$lon1 = $point1[0];
$lat1 = $point1[1];
$point2 = explode(',', $point2);
$lon2 = $point2[0];
$lat2 = $point2[1];
if ($lon1 == 0 || $lon2 == 0) {
return null;
}
$theta = $lon1 - $lon2;
$dist = sin(deg2rad($lat1)) * sin(deg2rad($lat2)) + cos(deg2rad($lat1)) * cos(deg2rad($lat2)) * cos(deg2rad($theta));
$dist = acos($dist);
$dist = rad2deg($dist);
$miles = $dist * 60 * 1.1515;
switch ($unit) {
case(self::UNIT_KM) :
$out = $miles * 1.609344;
break;
case(self::UNIT_MI) :
$out = $miles;
break;
case(self::UNIT_NA) :
$out = $miles * 0.8684;
break;
}
return $out;
}
Если же у вас через базу, то гуглите gis функции для вашей базы. там еще элементарнее, вплоть до радиуса.
Так же можете грубо обрезать lat/lng, чтобы показать необходимые точки, обычным вычитанием. будет грубо, но иногда этого хватает для задачи.