2016-10-27 14 views
-4

データベースに2つの文字列(緯度と経度)が格納されています。私のアプリケーションがインストールされているデバイスが特定の場所に到達すると、アクティビティが開始されます。if文で2つの文字列をチェックするにはどうすればよいですか?

これを解決するためにif文(下記のコードを参照)を書くことを考えましたが、うまくいきません。

これを行う別の方法はありますか?

誰でも私に提案を提供できますか?

tvLatitude.setText(String.valueOf(gps.getLatitude())); 
tvLongitude.setText(String.valueOf(gps.getLongitude())); 
String longi = tvLongitude.getText().toString(); 
String lati = tvLatitude.getText().toString(); 
String WorkLocationlongi = "REQUIRED LONGITUDE"; 
String WorkLocationlati = "REQUIRED LATITUDE"; 
mRootRef.child("Longitude").setValue(longi); 
mRootRef.child("Latitude").setValue(lati); 

if (longi.equals(WorkLocationlati)&& lati.equals(WorkLocationlongi)){ 
    String dtbClockon = tvClock.getText().toString(); 
    mRootRef.child("Dave_Clock_on_date").setValue(formattedDateOnly); 
    mRootRef .child("Dave_Clock_on").setValue(dtbClockon); 
    startActivity(new Intent(getBaseContext(), MainActivity.class)); 
} 
else { 
    Toast.makeText(context,"Not in work area please enter the yard and try again",Toast.LENGTH_SHORT).show(); 
} 

ありがとうございます。

+1

どうしたのですか?それはコンパイルされますか?もし本当ならeval?と評価されるべきですか? ... – George

+2

a)あなたはlatのために長い間混乱しましたか? "if(** longi **。equals(WorkLocation ** lati **)&& lati.equals(WorkLocationlongi))"? b)その場合、long/latは**正確に**同じでなければなりません。あなたはいくつかの "バッファ"を追加する必要があります。モバイルのGPSがより正確であれば、正確に同じ位置にぶつかるのが難しくなります。 – Fildor

+1

「うまくいかない」とは何ですか? 'longi'と' lati'とは何が入っていますか? – QBrute

答えて

1

私はその仮定に基づいて、使用されている変数との混同があると思い、私は問題はGPSが正確ではないということだと思います

if (longi.equals(WorkLocationlongi)&& lati.equals(WorkLocationlati)) 
+3

正確な位置を叩くのもかなり難しいでしょう。私は、OPが「作業領域」とみなされるその場所の周りの小さな領域に及ぶ必要があると思います。 – Fildor

+0

それから私のために働いた小数点以下の桁を削除してください。私は巨大な量のウォーカーを求めていました。助けてくれてありがとうhelp @almost –

1

if (longi.equals(WorkLocationlati)&& lati.equals(WorkLocationlongi)) 

を変更することをお勧めします。同じ場所にいても毎回異なる価値が得られます

あなたはlongi、lati、WorkLocationlatiおよびWorkLocationlongiの最初の数桁を取ることができます。

注:(もっと小数点より正確な場所)

+0

まあ、ターゲットまでの距離を計算して一定距離を許容誤差(=許容誤差)とみなすこともできます。ただし、文字列を使用すると難しくなります。 – Fildor

+0

私は簡単なシステムだけを望んでいました。彼らがログオンする前に仕事中であることを確認するだけです。 –

+1

@MarkHarropそれでは、 "GPSフェンス"が欲しいです。あなたは、1つの特定のGPS位置でそれを行うことはできません。それはポイントのようになります。あなたは丸い周囲をカバーするためにポイントとある一定の距離を使用することができます。しかし、それは特定のビルディングでは不十分かもしれません。あなたはまた、利用可能な建物内のGPS修正を持っていない可能性があることに注意する必要があります。 – Fildor

1

私はあなたがWorkLocationlatiでlongiを比較する場合には、間違った値を比較していると信じています。また、私はちょうど同じ場所になるGPSが少し複雑になるので、そのためのいくつかの範囲を作成することをお勧めします。多分あなたはここでこのanwersを見てください:Algorithm to find all Latitude Longitude locations within a certain distance from a given Lat Lng location

+0

今これを見てくれます –

関連する問題