Поправил рассчёт координат для поиска точек поблизости

This commit is contained in:
Krivchikov Dmitry 2015-12-11 17:33:04 +03:00
parent 3c3c3f14eb
commit 87909a799b
1 changed files with 5 additions and 1 deletions

View File

@ -49,10 +49,14 @@ class Point extends Model
public function getClosestPoints($pointId) public function getClosestPoints($pointId)
{ {
$degrees = 1;
$point = Point::model()->getByPK($pointId); $point = Point::model()->getByPK($pointId);
$lat = floatval($point->lat); $lat = floatval($point->lat);
$lng = floatval($point->lng); $lng = floatval($point->lng);
$delta = (1+abs(SIN($lat/100)*SIN($lat/100)*5))*$degrees;
$query = ' $query = '
SELECT *, ( SELECT *, (
(POW(`lat`-:lat,2)+POW(`lng`-:lng,2)) (POW(`lat`-:lat,2)+POW(`lng`-:lng,2))
@ -71,7 +75,7 @@ class Point extends Model
LIMIT 6;'; LIMIT 6;';
$res = App::DB()->prepare($query, array(PDO::ATTR_CURSOR => PDO::CURSOR_FWDONLY)); $res = App::DB()->prepare($query, array(PDO::ATTR_CURSOR => PDO::CURSOR_FWDONLY));
$res->execute(array(':lat' => $lat, ':lng' => $lng, ':minLat' => $lat - 1, ':minLng' => $lng - 1, ':maxLat' => $lat + 1, ':maxLng' => $lng + 1)); $res->execute(array(':lat' => $lat, ':lng' => $lng, ':minLat' => $lat - $degrees, ':minLng' => $lng - $delta, ':maxLat' => $lat + $degrees, ':maxLng' => $lng + $delta));
$ready = array(); $ready = array();
$calledClass = get_called_class(); $calledClass = get_called_class();