पार्स के लिए Android Documentation के अनुसार डिफ़ॉल्ट सॉर्ट ऑर्डर पहले से ही दूरी (निकटतम तक निकटतम) होना चाहिए जबतक कि आप स्वयं एक और सॉर्ट ऑर्डर निर्दिष्ट नहीं कर लेते।
इसके अलावा, आप के रूप में आप,
निर्दिष्ट कर सकते हैं कि आप केवल मील की एक निश्चित संख्या के भीतर स्थानों चाहते हैं, किलोमीटर आदि ParseQuery.whereWithin*
तरीकों में देखना चाहते हो सकता है बाकी सब विफल रहता है और सॉर्ट क्रम अभी नहीं खाता है तो लौटाए गए स्थानों पर काम करना चाहते हैं, आप क्वेरी से लौटे का उपयोग करके ParseObject
एस के माध्यम से लूपिंग करके हमेशा उन्हें स्वयं क्रमबद्ध कर सकते हैं।
यह एक ParseGeoPoint
वस्तु वापस आ जाएगी और आप तो कर सकते हैं निम्नलिखित
ParseGeoPoint.distanceInKilometersTo(sLatlong);
उपयोगकर्ता के स्थान पर दूरी मिलता है और उस पर क्रमबद्ध करने के लिए।
संदर्भ यहाँ के लिए एक नमूना Comparator
है:
public class UserLocationComparator implements Comparator<ParseObject> {
private final ParseGeoPoint userLoc;
public UserLocationComparator(ParseGeoPoint userLoc) {
this.userLoc = userLoc;
}
@Override
public int compare(ParseObject po1, ParseObject po2) {
ParseGeoPoint loc1 = po1.getParseGeoPoint("rest_location");
ParseGeoPoint loc2 = po2.getParseGeoPoint("rest_location");
return loc1 == null ?
(loc2 == null ? 0 : 1) :
(loc2 == null ? -1 : Double.compare(userLoc.distanceInKilometersTo(loc1), userLoc.distanceInKilometersTo(loc2)));
}
}
और फिर यह सोचते हैं आप एक List<ParseObject> results;
बस कार्य करें:
Collections.sort(results, new UserLocationComparator(sLatlong));
स्रोत
2016-02-05 18:44:16
क्या आप जानते हैं कि पार्स सही बंद हो रहा है? जनवरी 2017 में उनकी सेवा बंद हो जाएगी। http://blog.parse.com/announcements/moving-on/ – Dom
हाँ मुझे पता है कि। मैं अपने विचार को प्रमाणित करने के लिए बस 3 महीने के लिए इसका उपयोग करूँगा। – Anirudh
मेरे उत्तर में एक साइड नोट के रूप में जब आप कहते हैं कि परिणाम दूरी के अनुसार क्रमबद्ध नहीं हैं, तो क्या आप 'FindCallback.done (...)' विधि में परिणामों के क्रम की जांच कर रहे हैं? अन्यथा आप परिणामों के आदेश की जांच कर रहे हैं? हो सकता है कि आप परिणाम संसाधित करने के बाद स्वयं को ऑर्डर बदल रहे हों। –