我正在为我的网站开发搜索功能。它使用haversine formula使用半径进行按位置搜索过滤器。这是我对此tutorial的查询:
SELECT id,
( 3959 * Acos(Cos(Radians(37)) * Cos(Radians(lat)) * Cos(
Radians(lng) - Radians(-122)) +
Sin(
Radians(37)) * Sin(Radians(lat))) ) AS distance
FROM markers
HAVING distance < 25
ORDER BY distance
LIMIT 0, 20;
如果我进入较小的区域(例如“澳大利亚新南威尔士州邦迪交界处”),这将起作用,但是如果我进入诸如“ NSW,Austraiia”的大区域,则该州将不起作用。我已经使用公式计算了它的great circle distance,并且距离该区域下的小区域的大圆距很远。还有其他公式/算法吗?或者我只是在这里想念什么?