我使用谷歌mapV2和我从谷歌地方api下载图像,并希望在弹出窗口中显示

时间:2013-01-11 13:44:28

标签: android google-maps popupwindow

我使用所有类来通过Url创建图像。

        ImageView imV=  ((ImageView) view.findViewById(R.id.badge));
        // Image url
        String image_url = "http://maps.gstatic.com/mapfiles/place_api/icons/cafe-71.png";
        final int stub_id = R.drawable.ic_action_search;
        // ImageLoader class instance
        ImageLoader imgLoader = new ImageLoader(getApplicationContext());

        // whenever you want to load an image from url
        // call DisplayImage function
        // url - image url to load
        // loader - loader image, will be displayed before getting image
        // image - ImageView
        imgLoader.DisplayImage(image_url,stub_id ,imV);

但它显示的是默认图片,而不是Url下载的图片。

https://developers.google.com/maps/documentation/android/reference/com/google/android/gms/maps/GoogleMap.InfoWindowAdapter

我正在使用infowindowAdapter类的goolge,它说我不会在数据和数据时改变图像。图像被加载到窗口中,这就是为什么它显示第一个默认图像.....并且以后不再改变

还有其他方法吗? 提前谢谢

1 个答案:

答案 0 :(得分:6)

我遇到了同样的问题。 我用asyncTask解决了它。

像这样的东西

private Drawable _infoImageDrawable;
public class MyMapActivity extends MenuActivity
{
    .....code code code....

    protected void handleMarkerClicked(final Marker marker, final String url) {
        new AsyncTask<Void, Void, Void>()
        {   
            @Override
            protected void onPreExecute() 
            {
                super.onPreExecute();
                _infoImageDrawable = null;
            }

            @Override
            protected Void doInBackground(Void... params) 
            {
                InputStream is;
                try {
                     is = (InputStream) new URL(url).getContent();
                     _infoImageDrawable = Drawable.createFromStream(is, "");
                } catch (MalformedURLException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
                } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
                }
                return null;                
            }

            @Override
            protected void onPostExecute(Void result) 
            {
            super.onPostExecute(result);
            marker.showInfoWindow();
            }
        }.execute();
    }
}

然后我只是将InfoWindowAdapter中的drawable设置为null(删除旧图像)和_imageInfoDrawable秒。 它有效 - 但我想要一个更好的解决方案。