json([]); } $merchants = json_decode(file_get_contents($jsonPath), true); // Filter by bbox if provided if ($request->has('bbox') && !empty($request->bbox)) { $bbox = explode(',', $request->bbox); if (count($bbox) === 4) { $minLng = (float) $bbox[0]; $minLat = (float) $bbox[1]; $maxLng = (float) $bbox[2]; $maxLat = (float) $bbox[3]; $merchants = array_filter($merchants, function ($m) use ($minLat, $maxLat, $minLng, $maxLng) { return $m['latitude'] >= $minLat && $m['latitude'] <= $maxLat && $m['longitude'] >= $minLng && $m['longitude'] <= $maxLng; }); } } // Filter by categories if provided if ($request->has('categories') && !empty($request->categories)) { $categories = explode(',', $request->categories); $merchants = array_filter($merchants, function ($m) use ($categories) { return in_array($m['category'], $categories); }); } // Return plain values return response()->json(array_map(function ($m) { $m['latitude'] = (float) $m['latitude']; $m['longitude'] = (float) $m['longitude']; return $m; }, array_values($merchants))); } }