我有地图视图,其中包含很多地方的针脚,每个针脚都可以显示气球。但是当我按下另一个别针时,旧的气球不会自动关闭,所以我想在每次气球显示之前清除气球
(我扩展了BalloonItemizedOverlay)
请帮助,谢谢。
答案 0 :(得分:2)
以下代码从地图中删除所有BalloonOverlayItem:
MapView.removeViews(0, MapView.getChildCount());
它相当于MapView.getOverlays()。clear()(用于常规叠加),上面的代码适用于包含Balloon叠加层的地图。
答案 1 :(得分:1)
/**
* Sets the visibility of this overlay's balloon view to GONE.
*/
private void hideBalloon() {
if (balloonView != null) {
balloonView.setVisibility(View.GONE);
}
}
/**
* Hides the balloon view for any other BalloonItemizedOverlay instances
* that might be present on the MapView.
*
* @param overlays - list of overlays (including this) on the MapView.
*/
private void hideOtherBalloons(List<Overlay> overlays) {
for (Overlay overlay : overlays) {
if (overlay instanceof BalloonItemizedOverlay<?> && overlay != this) {
((BalloonItemizedOverlay<?>) overlay).hideBalloon();
}
}
}
答案 2 :(得分:0)
也许为时已晚,但我认为我今天面临同样的问题。
使用mapView.getOverlays().clear()
删除项目时,会删除所有项目。
但是,如果您在BalloonItemizedOverlay.java
中查看方法'createAndDisplayBalloonOverlay',您会看到行mapView.addView(balloonView, params);
,因此mapView
会将气球的引用保留为子项。这就是为什么你的针已经消失但气球1仍然显示。
快速解决方法是在删除项目后使用方法BalloonOverlayView
删除mapView.removeViewAt()
的所有实例。同样取决于您的实施,您可能需要保留当前显示的气球。