Я знаю, что нельзя использовать rankby = расстояние и радиус одновременно. Но сейчас я не знаю, как это отсортировать. Я позвонил в Google Places Api, используя радиус и рассчитал расстояние вручную с помощью harvensin. Кто-нибудь может мне помочь? Спасибо
Я хочу реализовать сортировку следующим образом https://www.javatpoint.com/Comparator-interface-in-collection-framework, но я не понимаю, как ее реализовать.
private void makeRequest(String url,final Location location){
Log.d(TAG, "Url: " + url);
RequestQueue queue = Volley.newRequestQueue(mContext);
StringRequest stringRequest = new StringRequest(Request.Method.GET, url, new Response.Listener<String>() {
@Override
public void onResponse(String response) {
try {
JSONObject json = new JSONObject(response);
JSONArray results = json.getJSONArray("results");
List<LocationContent> list = new ArrayList<>();
Log.d(TAG, "no of results: " + results.length());
if(results.length() > 0) {
for (int i = 0; i < results.length(); i++) {
JSONObject googlePlace = results.getJSONObject(i);
Double distance = HelperClass.getDistanceFromLatLonInKm(
location.getLatitude(),location.getLongitude(),
googlePlace.getJSONObject("geometry").getJSONObject("location").getDouble("lat")
,googlePlace.getJSONObject("geometry").getJSONObject("location").getDouble("lng")) / 1000;
String distanceBetweenTwoPlace = String.valueOf(distance);
String distance_new = distanceBetweenTwoPlace.substring(0, 3);
list.add(new LocationContent(googlePlace.getString("name"),
googlePlace.getJSONObject("geometry").getJSONObject("location").getDouble("lat"),
googlePlace.getJSONObject("geometry").getJSONObject("location").getDouble("lng"),Double.valueOf(distance_new)));
}
}
refreshPlaces(list);
} catch (JSONException e) {
Log.e(TAG, "Error occurred while getting places", e);
}
Log.d(TAG, "onResponse: " + response.substring(0,250));
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
}
});
// Add the request to the RequestQueue.
queue.add(stringRequest);
}
private void refreshPlaces(List<LocationContent> list){
mList.clear();
mList.addAll(list);
mAdapter.setDataset(mList);
}