package com.osmnavigator; import android.content.Intent; import android.net.Uri; import android.view.View; import android.widget.Button; import android.widget.ImageView; import org.osmdroid.bonuspack.location.POI; import org.osmdroid.views.MapView; import org.osmdroid.views.overlay.Marker; import org.osmdroid.views.overlay.infowindow.MarkerInfoWindow; /** * A customized InfoWindow handling POIs. * We inherit from MarkerInfoWindow as it already provides most of what we want. * And we just add support for a "more info" button. * * @author M.Kergall */ public class POIInfoWindow extends MarkerInfoWindow { private POI mSelectedPOI; public POIInfoWindow(MapView mapView) { super(org.osmdroid.bonuspack.R.layout.bonuspack_bubble, mapView); Button btn = (Button)(mView.findViewById(org.osmdroid.bonuspack.R.id.bubble_moreinfo)); btn.setOnClickListener(new View.OnClickListener() { public void onClick(View view) { if (mSelectedPOI.mUrl != null){ Intent myIntent = new Intent(Intent.ACTION_VIEW, Uri.parse(mSelectedPOI.mUrl)); view.getContext().startActivity(myIntent); } } }); } @Override public void onOpen(Object item){ Marker marker = (Marker)item; mSelectedPOI = (POI)marker.getRelatedObject(); super.onOpen(item); //Fetch the thumbnail in background if (mSelectedPOI.mThumbnailPath != null){ ImageView imageView = (ImageView)mView.findViewById(org.osmdroid.bonuspack.R.id.bubble_image); mSelectedPOI.fetchThumbnailOnThread(imageView); } //Show or hide "more info" button: if (mSelectedPOI.mUrl != null) mView.findViewById(org.osmdroid.bonuspack.R.id.bubble_moreinfo).setVisibility(View.VISIBLE); else mView.findViewById(org.osmdroid.bonuspack.R.id.bubble_moreinfo).setVisibility(View.GONE); } }