长话短说:我使用毕加索从解析中获取图像,但下载的项目不是正确的图像文件。任何人都可以为ShowInfoWindow()提供示例吗?我不想使用毕加索。我从其他帖子得到了这个解决方案。
“infowindow未显示下载的图像,因为MapFragment将视图渲染为Canvas然后绘制。您在信息窗口中看到的不是您创建的视图,而是”图片“或”屏幕截图“你基本上需要再次在Marker对象上调用showInfoWindow(),这将重新渲染Canvas,你的图像现在将可见。“
有人可以告诉我如何以及在哪里可以在标记对象上调用ShowInfoWindow()?我使用毕加索但毕加索没有返回正确的文件图像。我知道使用Picasso在内存使用方面有很多优点,但它根本不起作用。我此刻不想使用毕加索。这是我的代码供参考。谢谢。
@Override
public void onMapReady(final GoogleMap googleMap) {
googleMap.setMyLocationEnabled(true);
this.googleMap = googleMap;
googleMap.setInfoWindowAdapter(new GoogleMap.InfoWindowAdapter() {
// Use default InfoWindow frame
@Override
public View getInfoWindow(Marker arg0) {
return null;
}
// Defines the contents of the InfoWindow
@Override
public View getInfoContents(Marker marker) {
// Getting view from the layout file info_window_layout
View v = getActivity().getLayoutInflater().inflate(R.layout.maps_infowindow, null);
v.setLayoutParams(new LinearLayout.LayoutParams((int) (mapFragment.getView().getMeasuredWidth() * .9), LinearLayout.LayoutParams.WRAP_CONTENT));
((TextView) v.findViewById(R.id.title)).setText(marker.getTitle());
((TextView) v.findViewById(R.id.desc)).setText(marker.getSnippet());
ArrayList<Item> list = new ArrayList<Item>();
ParseQuery<ParseObject> query = ParseQuery.getQuery("Places");
if(searchType!=null && searchType.length()>0) {
ArrayList<String> types = new ArrayList<String>();
for(String type: searchType.split("\\|")) types.add(type);
query.whereContainedIn("icon", types);
}
try {
List<ParseObject> objects = query.find();
for(ParseObject obj : objects){
if(obj.getParseFile("icon") !=null) {
ImageView icon = (ImageView) v.findViewById(R.id.imageView5);
icon.getLayoutParams().height = 800; // OR
icon.getLayoutParams().width = 800;
Picasso.with(getActivity()).load(obj.getParseFile("icon").getUrl()).into(icon, new MarkerCallback(marker));
}
}
} catch (ParseException e) {
}
return v;
}
});