Поправил рассчёт координат для поиска точек поблизости
This commit is contained in:
parent
3c3c3f14eb
commit
87909a799b
|
|
@ -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();
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue