我在我的应用程序中使用Google地图,并且通过从JSON获取纬度和经度来添加标记到我的地图,我的JSON看起来像这样:
[
{
"name": "Hotel 1"
"lat": "39.323523",
"long": "-3.036840"
},
{
"name": "Hotel 2"
"lat": "39.323523",
"long": "-2.937963"
}
]
这很好用,标记设置应该是这样。现在,当我点击一个标记时,我得到了纬度和经度但是做了以下事情:
mMap.setOnMarkerClickListener(new GoogleMap.OnMarkerClickListener() {
@Override
public boolean onMarkerClick(Marker marker) {
//Getting the lat and long based on marker position clicked
Double latitude = marker.getPosition().latitude;
Double longitude = marker.getPosition().longitude;
return false;
}
});
这也很好,每当我点击标记时,我都会得到正确的纬度和经度。
这是我的问题开始的地方;我现在要做的是,如果2个值为true,则从我的JSON文件中获取名称。在我的mMap.setOnMarkerClickListener
中,我称之为:
getInfoJson("39.323523", "-3.036840");
因此,如果纬度为39.323523
且经度为-3.036840
,那么我想得到名称。
这是我的方法:
private void getInfoJson(final String lati, final String longi) {
StringRequest stringRequest = new StringRequest(Request.Method.GET,
URL_DATA,
new Response.Listener<String>() {
@Override
public void onResponse(String s) {
try {
JSONArray array = new JSONArray(s);
for (int i = 0; i < array.length(); i++) {
JSONObject o = array.getJSONObject(i);
//Getting lat and long from JSONObject
mLat = o.getString("lat");
mLong = o.getString("long");
}
} catch (JSONException e) {
e.printStackTrace();
}
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError volleyError) {
Toast.makeText(getContext(), volleyError.getMessage(), Toast.LENGTH_LONG).show();
}
});
RequestQueue requestQueue = Volley.newRequestQueue(getContext());
requestQueue.add(stringRequest);
}
是否有人处理过这个问题,有人可以澄清一下这是怎么回事吗?
答案 0 :(得分:1)
尝试:
imgView.contentMode = .scaleAspectFit //Or any from below options
**************编辑*****************
private void getInfoJson(final String lati, final String longi) {
StringRequest stringRequest = new StringRequest(Request.Method.GET,
URL_DATA,
new Response.Listener<String>() {
@Override
public void onResponse(String s) {
try {
JSONArray array = new JSONArray(s);
for (int i = 0; i < array.length(); i++) {
JSONObject o = array.getJSONObject(i);
//Getting lat and long from JSONObject
mLat = o.getString("lat");
mLong = o.getString("long");
if(lati.equals(mLat) && longi.equals(mLong))
{
//get name here
name = o.getString("name");
}else {
}
}
} catch (JSONException e) {
e.printStackTrace();
}
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError volleyError) {
Toast.makeText(getContext(), volleyError.getMessage(), Toast.LENGTH_LONG).show();
}
});
RequestQueue requestQueue = Volley.newRequestQueue(getContext());
requestQueue.add(stringRequest);
}