我正在开发一个项目,其中有谷歌地图上显示的标记引脚,从服务器检索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;
}
});
我的方法是对的,还是有更好的方法呢?
答案 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))));
然后在getInfoWindow
上new 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}}