我正在为我的应用程序使用两个 Json API,NearbyPlaces API返回我的地点“名称”和“附近”,因为Google 距离矩阵 API以分钟为单位返回“持续时间”。
从 json Api 获取数据后,我尝试使用 Volley 库将数据加载到 RecyclerView。我能够解析附近位置的响应,并能够在 RecyclerView 中加载“名称”和“附近”,但在加载“持续时间”时遇到问题当前位置。
我正在编写以下代码来解析凌空响应中的附近位置:
String NEARBY_URL = "https://maps.googleapis.com/maps/api/place/nearbysearch/json?location="+current_latitude+","+current_longitude+"&radius=500&types=embassy|shopping_mall|school|zoo|taxi_stand&key=AIzaSyD784AbXVmgxPLyeIUG137FEMu-82sadK4";
Log.e("Response:", NEARBY_URL);
final JsonObjectRequest jsonObjReq = new JsonObjectRequest(Request.Method.GET, NEARBY_URL, null, new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
Log.e("Response:", response.toString());
try {
String status = response.getString("status");
if (status.equalsIgnoreCase("OK")) {
JSONArray arrayObject = response.getJSONArray("results");
Log.e("Array Obj:", arrayObject.toString());
name_array = new ArrayList<>();
add_array = new ArrayList<>();
latitide_array=new ArrayList<>();
longitude_aray =new ArrayList<>();
for (int i = 0; i < arrayObject.length(); i++) {
JSONObject c = arrayObject.getJSONObject(i);
//below codes for current place and vicinity
String name = c.getString("name");
String address = c.getString("vicinity");
Log.e("Name", name);
Log.e("Address", address);
name_array.add(name);
add_array.add(address);
//below code to get latitude and longitude of specific location
JSONObject geometry = c.getJSONObject("geometry");
JSONObject locaction = geometry.getJSONObject("location");
Double lat = locaction.getDouble("lat");
Double lng = locaction.getDouble("lng");
Log.e("Latitude>>>>", lat.toString() + " " + lng.toString());
latitide_array.add(lat);
longitude_aray.add(lng);
//adding places detail in ArrayList for passing a pararmeter for RecyclerAdapter
nearby_items.add(new NearbyPlaces(name_array.get(i).toString(), add_array.get(i).toString(), "0.2", R.drawable.icon_rate));
}
}
} catch (JSONException e) {
e.printStackTrace();
}
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
VolleyLog.d("Error: ", "Error: " + error.getMessage());
Toast.makeText(getActivity(),
error.getMessage(), Toast.LENGTH_SHORT).show();
// hide the progress dialog
// hidepDialog();
}
});
// Adding request to request queue
app.addToRequestQueue(jsonObjReq);
}
我面临的问题是我无法在同一个响应中解析“Googel 距离矩阵 API”。
是否可以从 Volley 解析多个 API?或者我们可以使用单个 API 来获取“地名”、“地址”和“两个地理点之间的距离” 我也用谷歌搜索过,但没有找到任何解决方案,期待这里有一些指导方针,谢谢