【发布时间】:2020-03-26 16:17:06
【问题描述】:
通过从 JSON 获取数据,我能够在 android 上的谷歌地图上制作多个标记。所以现在每个标记都有自己对应的bukken_name、latitute 和longitude。
每次点击地图上的特定标记。我希望它在控制台中显示他们检索到的 JSON 数据。
在我当前的代码中,onMarkerClick 获取值,然后将其显示在 System.out.println 中。但是每当我这样做时,单击标记它只会继续显示与最后一个 JSON 数据完全相同的值。
StringRequest stringRequest = new StringRequest(url, new Response.Listener<String>() {
@Override
public void onResponse(String response) {
try{
JSONObject jsonObject = new JSONObject(response);
JSONObject data = jsonObject.getJSONObject("data");
JSONArray bukken_list = data.getJSONArray("bukken_list");
for (int i = 0; i < bukken_list.length(); i++) {
JSONObject returnBukken = bukken_list.getJSONObject(i);
String latitude = returnBukken.getString("ido_hokui"); //latitude
String longitude = returnBukken.getString("keido_tokei"); //longitude
final String bukken_name = returnBukken.getString("bukken_name"); //longitude
final Double x = Double.parseDouble(latitude);
final Double y = Double.parseDouble(longitude);
System.out.println("COORDINATES: " + i);
System.out.println("LATITUDE: " + latitude);
System.out.println("LONGITUDE: " + longitude);
System.out.println("BUKKEN NAME: " + longitude);
LatLng japan = new LatLng(x, y);
MarkerOptions client_marker = new MarkerOptions().position(new LatLng(x, y));
client_marker.icon(BitmapDescriptorFactory.fromResource(R.drawable.mapicon_rent));
mMap.animateCamera(CameraUpdateFactory.newLatLngZoom(japan, 10f));
mMap.addMarker(client_marker);
mMap.moveCamera(CameraUpdateFactory.newLatLng(japan));
mMap.setOnMarkerClickListener(new GoogleMap.OnMarkerClickListener() {
@Override
public boolean onMarkerClick(Marker arg0) {
//FAULT: does not get value of each marker
System.out.println("MARKER " + x + " " + y + " " + bukken_name);
return true;
}
});
}
} catch (JSONException e) {
e.printStackTrace();
}
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
int x = 1;
// Anything you want
}
});
【问题讨论】:
标签: android google-maps