2016-02-23 14 views
5
-uniqueid1 
      latitude: 30.7188235 
      longitude: 76.810132 
-uniqueid2 
      latitude: 30.7188235 
      longitude: 76.810132 

Firebase, ben belirli bir uzun uniqueids yakın bulmak istiyorum kullanarak LatLng/lat.I biz uygularım startAt() ve Endat() ancak hiçbir success.How kullanmaya başladı şart cümlesi ve birden queries.The bana bunu yapmak yerleşik bir yolu yoktur inanmıyorumyakındaki bulma Firebase 1000 böyle kayıtlar vardır

SELECT uniqueids from table where (lon-specific_lon)^2+(lat-specific_lat)^2<CONSTANT. 

cevap

12

Aradığınız şey Firebase's Geofire kütüphanesinin bir parçasıdır. Firebase'in sadece tek bir değer üzerinde sorgulayabileceğiniz sınırlarını zekice çalışmak için Geohashes'ı kullanır. Aralık sorgulama için uygun olan tek bir değere boylamı ve enlemi doldurmanın bir yolu vardır.

Daha fazla bilgi için Github repo for Geofire'a bakın.

+0

Çok teşekkürler, Frank. –

+0

@Frank bu, kendiminkinden daha iyi bir yanıt gibi görünüyor. Benimkini silmeli miyim, yoksa hala yararlı olabileceği durumlar var mı? –

+0

Ben de seninkilerin ilginç olduğunu düşündüm, lütfen onu bırak. Daha iyi/basit bir cevap olması, sizinkileri geçersiz kılmaz. OP, onu destekleyerek bunu kabul edebilir (mevcut oylama benimdir). –

5

arayan sorgulamak ama tek yönlü bir kare ızgara oluşturmak için olabilir ve her yeri atamak a bölge - diyelim, bölge

{x: 2, y: 4}

enter image description here

Sonra veri çağrısı ayarlanabilir olabilir belirli bir aralık içinde her şeyi döndürerek yerlerde bölge ve komşu bölgeler tüm geri dönebilirler. Eğer {x: 2, y: 4} 1 bölgesi içinde her şeyi dönmek istiyorsa Örneğin, sen dönecekti:

{x: 1, y: 3} 
{x: 1, y: 4} 
{x: 1, y: 5} 
{x: 2, y: 3} 
{x: 2, y: 4} // The region you're in right now 
{x: 2, y: 5} 
{x: 3, y: 3} 
{x: 3, y: 4} 
{x: 3, y: 5} 

enter image description here

Bu bölgeyi ve o meydanda yerlerin hepsini saran bir kare dönecekti. Eğer dairesel olmanız gerekiyorsa, seçiminizi ön uçta kırpabilirsiniz. Bu mükemmel bir çözüm değil, ancak daha az veri getiren, başarmaya çalıştığınızı düşündüğüm şeyi yapmanın bir yolu olabilir.