Я использую Google MapV2, и я загружаю изображение из Google Place API и хочу отображать его во всплывающем окне.

я использую все классы для получения изображения через 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, и он говорит, что я не могу изменить изображение, когда данные и изображение загружаются в окно, почему он отображает первое изображение по умолчанию..... и не меняется позже

так есть ли другой способ? заранее спасибо


person che_chouhan    schedule 11.01.2013    source источник


Ответы (1)


У меня такая же проблема. Я решил это с помощью 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. Это работает, но я хотел бы лучшее решение.

person Kong Far    schedule 15.01.2013