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

グーグルのinfowindowAdapterクラスを使用しているimは、データと画像がウィンドウに読み込まれると画像を変更しないと言っていますが、なぜ最初のデフォルト画像が表示され、後で変更されないのですか?

それで他の方法はありますか?前もって感謝します

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のドローアブルを最初にnull(古い画像を削除)に設定し、次に_imageInfoDrawableに設定します。それは動作します-しかし、私はより良い解決策を望んでいます。

于 2013-01-15T11:55:23.170 に答える