I have an application that uses the mapview-overlay-manager code to draw map markers on a MapView using the LazyLoadManager from a web api. As I drag the map, the markers load/unload as expected.
On the tap of a marker I inflate a balloon.xml file and use it to show a balloon above the marker. This is where the problem is. It works, but then suddenly (which I cannot repeat on a consistently) the balloon overlay will stop showing up on the screen.
Its odd though, because the marker still shows that its been tapped, but then the balloon stops showing up. I've checked that the balloon is not null (which it is not), and that the itemInfo is not null. Its just not getting added to the MapView after the call to .addView(...), yet all the params are valid.
Side note: Anytime this happens, all of the overlays turn real dark and the overlay shadows go from semi-transparent to black. I have no idea what is causing that, but it happens at the same time, which makes me believe its a drawing problem.
Code for the above problem is below. Any tips/ideas/etc would be appreciated.
@Override
public boolean onSingleTap(MotionEvent e, ManagedOverlay overlay, GeoPoint point, ManagedOverlayItem item) {
if(mBalloon != null)
{
mMapView.removeView(mBalloon);
mBalloon = null;
}
if(item != null) {
//Toast.makeText(getApplicationContext(), item.getTitle(), Toast.LENGTH_SHORT).show();
MapView.LayoutParams balloonLayoutParams = new MapView.LayoutParams(350, MapView.LayoutParams.WRAP_CONTENT, item.getItemInfo().getMarkerPoint(mMapView.getProjection()), MapView.LayoutParams.BOTTOM_CENTER);
if(mBalloon == null) {
if(mLayoutInflater == null) {
mLayoutInflater = getLayoutInflater();
}
ViewGroup parent = (ViewGroup)mMapView.getParent();
mBalloon = (BalloonLayout) mLayoutInflater.inflate(R.layout.balloon_layout, parent, false);
}
TextView title = (TextView)mBalloon.findViewById(R.id.title);
title.setText(item.getItemInfo().getTitle());
TextView subTitle = (TextView)mBalloon.findViewById(R.id.subTitle);
subTitle.setText(item.getItemInfo().getBalloonSubTitle());
if(DEBUG) Log.d(TAG, "Setting on click listener.");
((ImageButton)mBalloon.findViewById(R.id.go_button)).setOnClickListener(new ViewItemInfoListener(item.getItemInfo()));
mMapView.addView(mBalloon, balloonLayoutParams);
}
return false;
}
});
// Fires off the background event to get the
overlayManager.populate();
}