/** * @param $column * @param $swLatitude * @param $swLongitude * @param $neLatitude * @param $neLongitude * @param array $keyToInclude * * @return Collection|ParseObject[] */ public function withinBox($column, $swLatitude, $swLongitude, $neLatitude, $neLongitude, $keyToInclude = []) { $southWest = new ParseGeoPoint((double) $swLatitude, (double) $swLongitude); $northEast = new ParseGeoPoint((double) $neLatitude, (double) $neLongitude); $this->query->withinGeoBox($column, $southWest, $northEast); for ($i = 0; $i < count($keyToInclude); $i++) { $this->query->includeKey($keyToInclude[$i]); } return Collection::make($this->query->find($this->useMasterKey)); }
public function testGeoBoxTooLarge() { $centerPoint = new ParseGeoPoint(0, 0); $center = ParseObject::create('TestObject'); $center->set('location', $centerPoint); $center->save(); $southwest = new ParseGeoPoint(-89, -179); $northeast = new ParseGeoPoint(89, 179); // This is an interesting test case because mongo can actually handle this // kind of query, but // if one actually happens, it's probably that the developer switches the // two points. $query = new ParseQuery('TestObject'); $query->withinGeoBox('location', $southwest, $northeast); try { $query->find(); $this->assertTrue(false, 'Query should fail for being too large.'); } catch (ParseException $e) { } }