在没有Picasso Lib的情况下获取Parse图像并使用ShowInfoWindow()代替

时间:2016-06-28 18:06:51

标签: android google-maps infowindow

长话短说:我使用毕加索从解析中获取图像,但下载的项目不是正确的图像文件。任何人都可以为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;

            }
        });

0 个答案:

没有答案