2

問題があります。AndroidアプリのGoogleマップで最寄りのポイントを取得したい。さまざまなポイント/座標が sqlite データベースに保存されます。そして、それらから最も近い 5 を取得する必要があります。私が使用しているクエリは次のとおりです。

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 , 5;

しかし、「そのような関数はありません: acosが存在します」というエラーが表示されます。その適切な解決策は何でしょう

4

2 に答える 2

3

SQLite は既定で三角関数をサポートしていないため、SQL クエリで使用することはできません。

座標のリストを取得してアプリケーション コードで処理するか、ユーザー定義関数を使用して SQLite で Java の三角関数を試して公開することができます (SQLite でユーザー定義関数を作成するにはどうすればよいですか? を参照してください)。

于 2013-01-04T21:42:52.193 に答える