2016-08-09 9 views
6

पर Geofire परिणाम आदेश मैं Geofire for iOS के साथ प्रयोग किया गया है, लेकिन एक चक्र क्वेरी में खोज की स्थिति से दूरी लौटने की किसी भी तरह से खोजने के लिए प्रतीत नहीं कर सकते हैं। GFQueryResultBlock केवल कुंजी और स्थिति देता है। क्या मैं यह मानने में सही हूं कि मुझे दूरी की गणना करना है?दूरी

मान लीजिए कि मैं Firebase साथ पास के एक रेस्तरां एप्लिकेशन बनाने रहा हूँ, और उपयोगकर्ता के लिए 20 निकटतम रेस्तरां प्रदर्शित करने के लिए कितने करीब वे कर रहे हैं द्वारा आदेश दिया चाहते हैं। मैं सर्कल क्वेरी बना सकता हूं और तब तक लूप के माध्यम से सर्च त्रिज्या बढ़ा सकता हूं जब तक मुझे 20 रेस्तरां नहीं मिलते। फिर प्रत्येक के लिए दूरी की गणना करें और उन्हें उपयोगकर्ता को प्रदर्शित करने से पहले उन्हें सॉर्ट करें। (की गणना दूरी & छंटाई) यह एक उचित दृष्टिकोण है कि काम की एक बड़ी राशि एप्लिकेशन डेटा की संरचना करने में किया जा रहा है दिया है?

मैंने देखा है कि जावास्क्रिप्ट जियोफ़ीयर प्रश्न return distance from the center, लेकिन मुझे लगता है कि आईओएस और एंड्रॉइड संस्करण इस से अलग हैं।

+1

दृष्टिकोण में कोई बुराई नहीं है। और यदि आप आईओएस द्वारा प्रदान की गई सॉर्टिंग रूटीन में से एक का उपयोग करते हैं, तो यह बहुत तेज़ है। मैं अपने ऐप्स में से एक के लिए एक ही दृष्टिकोण का उपयोग करता हूं और कभी भी किसी भी मुद्दे का सामना नहीं करता। चूंकि जियोफ़ीयर परिणामस्वरूप वृद्धि देता है, सभी बाद के सम्मिलन लॉग (एन) समय में होते हैं जो काफी कुशल होते हैं। मुझे लगता है कि आप हजारों के क्रम में वस्तुओं से निपट नहीं रहे हैं। – kdeo

+0

Firebase geofire-js: कैसे स्थिर द्वारा पास की चाबी की सूची प्राप्त करने (निर्धारित) स्थानों: http://stackoverflow.com/questions/43632746/firebase-geofire-js-how-to-get-list-of-keys -of-पास-दर-staticfixed-स्थानों –

उत्तर

3

जब आप जियोफ़ीयर से पूछताछ कर रहे हैं, प्रासंगिक परिणाम स्वचालित रूप से आरोही क्रम द्वारा आदेश दिए जाते हैं। मेरी कोड यहाँ:: तो आदेश दूरी प्राप्त करने के लिए, मैं सिर्फ distanceFromLocation समारोह का उपयोग कर

func getGeoFirePlaces(){ 

    let geofireRef = FIRDatabase.database().reference().child("testForGeofire") 
    let geoFire = GeoFire(firebaseRef: geofireRef) 
    //geoFireRef is pointing to a firebase reference where I previously set all places' location 
    let userPosition = CLLocation(latitude: 32.0776067, longitude: 34.78912) 
    let circleQuery = geoFire.queryAtLocation(userPosition, withRadius: 2) 

    circleQuery.observeEventType(.KeyEntered, withBlock: { (key: String!, location: CLLocation!) in 
     print("Key '\(key)' entered the search area and is at location '\(location)'") 

     //getting distance of each Place return with the callBack 
     let distanceFromUser = userPosition.distanceFromLocation(location) 
     print(distanceFromUser) 
    }) 

} 

आशा इस मदद!

+0

Firebase geofire-js: कैसे स्थिर द्वारा पास की चाबी की सूची प्राप्त करने (निर्धारित) स्थानों: http://stackoverflow.com/questions/43632746/firebase-geofire-js-how करने वाली मिलता-सूची के- कुंजी के- पास-दर-staticfixed-स्थानों –

संबंधित मुद्दे