Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何为每次点击谷歌地图标记检索JSON响应?_Android_Google Maps - Fatal编程技术网

Android 如何为每次点击谷歌地图标记检索JSON响应?

Android 如何为每次点击谷歌地图标记检索JSON响应?,android,google-maps,Android,Google Maps,通过从JSON获取数据,我能够在android上的谷歌地图上做出多个标记。因此,现在每个标记都有自己相应的bukken_名称,latitute和经度 每次单击地图上的特定标记时。我希望它在控制台中显示检索到的JSON数据。 在我的当前代码中,onMarkerClick获取值,然后将其显示在System.out.println中。但每当我点击标记时,它只会显示与上一个JSON数据完全相同的值 StringRequest stringRequest = new StringRequest(url,

通过从JSON获取数据,我能够在android上的谷歌地图上做出多个标记。因此,现在每个标记都有自己相应的
bukken_名称
latitute
经度

每次单击地图上的特定标记时。我希望它在控制台中显示检索到的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
            }
        });
StringRequest-StringRequest=new-StringRequest(url,new-Response.Listener()){
@凌驾
公共void onResponse(字符串响应){
试一试{
JSONObject JSONObject=新JSONObject(响应);
JSONObject data=JSONObject.getJSONObject(“数据”);
JSONArray bukken_list=data.getJSONArray(“bukken_list”);
对于(int i=0;i
将bukken_名称设置为标记的标记:

Marker-Marker=mMap.addMarker(客户机标记);
marker.setTag(bukken_名称);
在标记上单击:

markerclick上的公共布尔值(Marker clicked Marker){
LatLng位置=clickedMarker.getPosition();
System.out.println(“标记”+location.latitude+“”+location.longitude+“”+clickedMarker.getTag());
返回true;
}

我在
bukken_name
上得到了
null
我的好先生。还有一个问题,是否可以在一个标记中设置多个标记?谢谢大家!@Olufsen
setTag()
接受
对象
。在此处查看@MohammedAlSafwan的答案: