1

我使用所有类通过 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

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

那么还有其他方法吗?提前致谢

4

1 回答 1

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。它有效 - 但我想要一个更好的解决方案。

于 2013-01-15T11:55:23.170 回答