drdisrespect
drdisrespect

Reputation: 55

How to put an image inside GoogleMaps api snippet

I would like to insert a snippet with an image inside, whenever someone will click the marker they will see a bitmap image inside the marker description (snippet).

  mSydney = mMap.addMarker(new MarkerOptions()
            .position(SYDNEY)
            .title("test")
            .snippet(IMAGE HERE)
            .icon();

I have an URL with a image how do i do it?

Upvotes: 0

Views: 1296

Answers (2)

jagapathi
jagapathi

Reputation: 1645

I used Picasso for image loading

This is java code for inflating custom info window

googleMap.setInfoWindowAdapter(new GoogleMap.InfoWindowAdapter() {
        @Override
        public View getInfoWindow(final Marker marker) {
            v[0] = getActivity().getLayoutInflater().inflate(R.layout.map_info_design, null);
            if (marker != null) {

                final ImageView logo=(ImageView)v[0].findViewById(R.id.logo);




                t1=new Target() {
                    @Override
                    public void onBitmapLoaded(Bitmap bitmap, Picasso.LoadedFrom from) {
                        logo.setImageBitmap(bitmap);

                    }

                    @Override
                    public void onBitmapFailed(Drawable errorDrawable) {

                    }

                    @Override
                    public void onPrepareLoad(Drawable placeHolderDrawable) {

                    }
                };
                Picasso.with(getActivity())
                        .load(b1.get(Integer.parseInt(marker.getSnippet()))).error(R.drawable.logo_icon)
                        .into(logo,new MarkerCallback(marker));

            }
            return (v[0]);
        }

        @Override
        public View getInfoContents(Marker marker) {


            return null;
        }
    });

Layout XML file (R.layout.custom_marker_maps)

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:background="@drawable/comment_icon"
android:padding="10dp"
android:layout_height="wrap_content">

<ImageView
    android:layout_width="60dp"
    android:layout_marginLeft="10dp"
    android:layout_marginStart="10dp"
    android:layout_centerInParent="true"
    android:layout_height="60dp"
    android:id="@+id/logo"/>

</RelativeLayout>

Add this code for callback (to solve Picasso bug)

static class MarkerCallback implements Callback {
    Marker marker=null;

    MarkerCallback(Marker marker) {
        this.marker=marker;
    }

    @Override
    public void onError() {
        Log.e(getClass().getSimpleName(), "Error loading thumbnail!");
    }

    @Override
    public void onSuccess() {
        if (marker != null && marker.isInfoWindowShown()) {
            marker.hideInfoWindow();
            marker.showInfoWindow();
        }
    }
}

OUTPUT

enter image description here

Upvotes: 1

Siva
Siva

Reputation: 1861

fromAsset(String assetName) – Loading from assets folder
fromBitmap (Bitmap image) – Loading bitmap image
fromFile (String path) – Loading from file
fromResource (int resourceId) – Loading from drawable resource

// create marker
MarkerOptions marker = new MarkerOptions().position(new LatLng(latitude, longitude)).title("Hello Maps");

// Changing marker icon
marker.icon(BitmapDescriptorFactory.fromResource(R.drawable.my_marker_icon)));

// adding marker
googleMap.addMarker(marker);

Upvotes: 0

Related Questions