使用来自JSON android的数据设置谷歌地图标记的自定义信息窗口

时间:2014-10-22 13:16:10

标签: java android json google-maps

我正在开发一个项目,其中有谷歌地图上显示的标记引脚,从服务器检索latitiude和经度。但我想自定义信息窗口,它包含标题和价格(两个字段都是出现在JSON响应中)。一种方法是遍历包含数据的列表并检查标记引脚的相应纬度(使用marker.getLatitude()),然后获取相应的标题和价格,然后在下面的方法中设置它:

googleMap.setInfoWindowAdapter(new InfoWindowAdapter() {

            // Use default InfoWindow frame
            @Override
            public View getInfoWindow(Marker arg0) {
                return null;
            }
编辑:这是我使用过的代码

for(int i=0;i<job_list.size();i++)
        {
            Job_data j=job_list.get(i);
            googleMap.addMarker(new MarkerOptions().title(j.job_shop_name)
                    .position(new LatLng(Double.parseDouble(j.job_shop_latitude),Double.parseDouble(j.job_shop_longitude))));



        }

如何修改上述代码以设置自定义信息窗口的详细信息?                 //定义InfoWindow的内容                 @覆盖                 public View getInfoContents(Marker arg0){

                View v = getLayoutInflater().inflate(R.layout.info_window_layout, null);

               //possibly iterate through the list containing the json data and then set it here 

                return v;

            }
        });

我的方法是对的,还是有更好的方法呢?

1 个答案:

答案 0 :(得分:2)

而不是在标记上保存标题而不是保存整个json文本。

我认为你的j是一份工作而你的job_list包含所有工作。您只需要保存当前对象的JSON。像j.json_text这样的东西。您需要在创建对象时将json保存在对象上。然后将标记标题更改为json字符串。

 googleMap.addMarker(new MarkerOptions().title(j.json_text)
                .position(new LatLng(Double.parseDouble(j.job_shop_latitude), Double.parseDouble(j.job_shop_longitude))));

然后在getInfoWindownew JSONObject object = arg0.getTitle(),你可以new MarkerOptions().title(j.job_shop_name + "@@@" + j.job_shop_price),然后你的工作(完成)。

另一种方法是连接职称和价格。类似的东西:

getInfoWindow

然后在String[] contents = arg0.getTitle().split("@@@"); String title = contents[0]; String price = contents[1]; 分割标记标题,您就有了价格:

{{1}}