У меня есть приложение, которое использует код mapview-overlay-manager для рисования маркеров карты на MapView с помощью LazyLoadManager из веб-api. Когда я перетаскиваю карту, маркеры загружаются/выгружаются, как ожидалось.Всплывающие воздушные шары исчезают случайно после нажатия OverlayItem на MapView
На кране маркера я надуваю balloon.xml и используйте его, чтобы показать воздушный шар над маркером. Вот где проблема. Он работает, но затем внезапно (который я не могу повторить последовательно) наложение воздушного шара перестанет отображаться на экране.
Его странное, хотя маркер все еще показывает, что его прослушивали, но затем баллон перестает появляться. Я проверил, что воздушный шар не является нулевым (а это не так) и что itemInfo не является нулевым. Его просто не добавили в MapView после вызова .addView (...), но все параметры действительны.
Сторона примечания: В любое время это происходит, все накладки становятся настоящими темными, а наложенные тени переходят от полупрозрачного к черному. Я не знаю, что вызывает это, но это происходит одновременно, что заставляет меня поверить в проблему рисования.
Код для вышеуказанной проблемы ниже. Любые советы/идеи/и т.д. будут оценены.
@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();
}