boundingCoordinates($radius, 'miles'); // Get the points halfway between the bounds $lathalf = abs($searchbounds[1]->getLatitudeInDegrees() - $searchbounds[0]->getLatitudeInDegrees()) / 2; $lonhalf = abs($searchbounds[1]->getLongitudeInDegrees() - $searchbounds[0]->getLongitudeInDegrees()) / 2; $places1 = $database->select('places', '*', ['AND' => [ 'latitude[>]' => $searchbounds[0]->getLatitudeInDegrees(), 'latitude[<]' => $searchbounds[1]->getLatitudeInDegrees() - $lathalf, // 0 - .5 'longitude[>]' => $searchbounds[0]->getLongitudeInDegrees(), 'longitude[<]' => $searchbounds[1]->getLongitudeInDegrees() - $lonhalf], // 0 - .5 "LIMIT" => 50]); $places2 = $database->select('places', '*', ['AND' => [ 'latitude[>]' => $searchbounds[0]->getLatitudeInDegrees() + $lathalf, // .5 - 1 'latitude[<]' => $searchbounds[1]->getLatitudeInDegrees(), 'longitude[>]' => $searchbounds[0]->getLongitudeInDegrees() + $lonhalf, // .5 - 1 'longitude[<]' => $searchbounds[1]->getLongitudeInDegrees()], "LIMIT" => 50]); $places3 = $database->select('places', '*', ['AND' => [ 'latitude[>]' => $searchbounds[0]->getLatitudeInDegrees(), 'latitude[<]' => $searchbounds[1]->getLatitudeInDegrees() - $lathalf, // 0 - .5 'longitude[>]' => $searchbounds[0]->getLongitudeInDegrees() + $lonhalf, // .5 - 1 'longitude[<]' => $searchbounds[1]->getLongitudeInDegrees()], "LIMIT" => 50]); $places4 = $database->select('places', '*', ['AND' => [ 'latitude[>]' => $searchbounds[0]->getLatitudeInDegrees() + $lathalf, // .5 - 1 'latitude[<]' => $searchbounds[1]->getLatitudeInDegrees(), 'longitude[>]' => $searchbounds[0]->getLongitudeInDegrees(), 'longitude[<]' => $searchbounds[1]->getLongitudeInDegrees() - $lonhalf], // 0 - .5 "LIMIT" => 50]); $places = array_merge($places1, $places2, $places3, $places4); $geo['name'] = "Places"; $geo['type'] = 'FeatureCollection'; $geo['features'] = []; foreach ($places as $place) { $geo['features'][] = array("type" => "Feature", "geometry" => [ "type" => "Point", "coordinates" => [ floatval($place['longitude']), floatval($place['latitude']) ] ], "properties" => [ "osm_id" => intval($place['osmid']), "name" => ($place['name'] == '' ? null : $place['name']) ] ); } $out = json_encode($geo); if ($out == false) { sendError("Server error."); } else { echo $out; }