ジオメトリポイントとして値を保存している場合は、使用可能な Geometry Functions (距離や境界線を計算するために 'GLength'や 'LineString'など)、次に最も一般的に浮動小数点値を出力し、このテーブルを例
event
id -> int -> 11 -> unsigned -> primary -> auto increment
name -> varchar -> 255
location -> point
このクエリを使用すると、指定された緯度、長い位置、およびテーブルイベント内の行の値の間の距離が取得されます
SELECT
ev.id,
ev.name,
(
GLength(
LineString(
(
PointFromWKB(
POINT(
32.660629,
-117.106354
)
)
),
(
ev.location
)
)
)
) * 100
AS distance
FROM
event ev
結果としてあなたは
=====================================
= id = name = distance =
=====================================
= 1 = event x = 16.956332397071797=
=====================================
これをZendクエリとして実装するには、これと似たようなことを行います(実装に応じて、$ tableの値はどこにありますか)
$point = new stdClass();
$point->lat = 32.660629;
$point->lon = -117.106354;
$table = $this->getDbTable();
$resultSet = $table->fetchAll(
$table->select()
->from(
$table,
array(
'id',
'name',
new Zend_Db_Expr("
(
GLength(
LineString(
(
PointFromWKB(
POINT(
{$from->lat},
{$from->lon}
)
)
),
(
location
)
)
)
) * 100
AS 'distance'
"
),
'category',
'user'
)
)
);
お役に立てれば。