私はFiremapリアルタイムデータベースを持っており、Googlemap上の場所に関連する項目のセットを持っています。したがって、Firebaseのすべての子は、このようなデータ構造を持っています。必要に応じて手動でFirebaseからデータを取得することができます。
-item
latitude:"5511231165654"
longitude:"516891812013216"
postalcode: "10013"
cityname: "New York"
私のアプリでは、データベースのすべてのアイテムがマーカーの形でGooglemapの関連する場所に追加されています。 すべてのユーザーにすべてのアイテムを送信することは良い考えではないと思います。ユーザーに関連するこれらのアイテムだけを送信する方が効率的です。これらのアイテムは、ユーザーと同じエリアにいるユーザーで、この場合は同じエリアは同じ郵便番号を意味します。私はこのクエリ
Query sortedByLocation = myRef.orderByChild("postalcode").equalTo(currentpostalcode);
sortedByLocation.addListenerForSingleValueEvent(
new ValueEventListener() {
.
. do something
.
}
を構築し、これを処理するには
私はまた、ジオコーダからcitynameをcurrentpostalcodeを得ました。現在、問題はジオコーダーが郵便番号を解読できず、それに対してヌルを返すことができない場合がありますが、それは必ずcitynameを返します。だから私はクエリを
に変更しましたQuery sortedByLocation = myRef.orderByChild("cityname").equalTo(currentcity);
どうすればこれらの2つのクエリーを組み合わせることができますか?私はこのような何かをしたい:
is postalcode == null than check for cityname
他の質問は、必要に応じて手動でデータを取得することが可能ですか?
ユーザーがアプリを起動したとすると、アプリはユーザーと同じエリアにあるすべてのアイテムを取得するようになりましたが、ユーザーはこのエリアを離れて他のエリアに移動します。
アプリを再起動せずにこの新しい領域の新しいデータを取得する方法を教えてください。