0

2 地点間の距離を計算しようとしています。1 つの場所の緯度経度は今のところハード コードされています (GPS の値を考慮して後で変更します)、他の場所はデータベースに保存されます。次のクエリを使用しています

Cursor c = sampleDB.rawQuery("SELECT NAME, CONTACT,((LAT -" +
        " LATCUR) * (LAT - LATCUR) + ((LONG - LONGCUR) * 2) * ((LONG - LONGCUR) * 2)) " +
        "AS DISTANCE FROM AMBULANCE ORDER BY DISTANCE", null );

とは現在の値ですLATCURLONGCURlatcur という名前の列がないため、エラーが発生します。私は何をすべきか?

latcur と longcur の値を public static double LATCUR = 39.991932; として宣言しました。public static double LONGCUR = -83.012352;

コード: public class MainActivity extends ListActivity {

private final String DBNAME = "SERVICES";
private final String TABLENAME = "AMBULANCE";
public static double LATCUR = 39.991932;
public static double LONGCUR = -83.012352;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);


    ArrayList<String> results = new ArrayList<String>();
    SQLiteDatabase sampleDB = null;

    try {

        sampleDB =  this.openOrCreateDatabase(DBNAME, MODE_PRIVATE, null);

        sampleDB.execSQL("CREATE TABLE IF NOT EXISTS " +
                TABLENAME +
                " (NAME VARCHAR, CONTACT VARCHAR," +
                " LAT float, LONG float, LATC double, LONGC double);");

カーソル c = sampleDB.rawQuery("SELECT NAME, CONTACT,((LAT -" + " LATCUR) * (LAT - LATCUR) + ((LONG - LONGCUR) * 2) * ((LONG - LONGCUR) * 2)) " + "救急車からの距離としての距離順", null );

        if (c != null ) {
            if  (c.moveToFirst()) {
                do {
                    String NAME = c.getString(c.getColumnIndex("NAME"));
                    String CONTACT = c.getString(c.getColumnIndex("CONTACT"));
                    results.add("" + NAME + ",CONTACT: " + CONTACT);
                }while (c.moveToNext());
            } 
        }

        this.setListAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1,results));


    }   
4

2 に答える 2

1

これを試して.....

    Cursor c = sampleDB.rawQuery("SELECT NAME, CONTACT,((LAT -"+LATCUR+") * (LAT - "+LATCUR+") + ((LONG - "+LONGCUR+") * 2) * ((LONG - "+LONGCUR+") * 2)) " +
 "AS DISTANCE FROM AMBULANCE ORDER BY DISTANCE", null );

それが役に立てば幸い。

于 2013-03-30T12:27:16.097 に答える
1

あなたはそれらを引用しています。引用符で囲まれた SQL 文字列の外側ですべての計算を行う必要があります。

于 2013-03-30T11:54:25.173 に答える