【发布时间】:2018-10-10 04:45:20
【问题描述】:
我在我的应用程序中使用 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 个值是真的,我现在要做的是从我的 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);
}
有人处理过这个问题吗?有人可以澄清一下这是怎么可能的吗?
【问题讨论】:
-
使用
String类的.equals方法。 -
只是确认一下,GET 请求会获取您想要解析的 JSON 数组,以查看纬度和经度是否匹配?如果他们想返回名字?
-
@casualcoder 抱歉,我错过了您的评论,是的,这正是我想要实现的目标。
标签: java android json google-maps