多くの場所のピンを含むマップビューがあり、各ピンはその上にバルーンを表示できます。しかし、別のピンを押すと、古いバルーンは自動的に閉じないので、他のバルーンが表示される前に毎回バルーンをクリアしたい
(BalloonItemizedOverlay を拡張します)
助けてください、ありがとう。
多くの場所のピンを含むマップビューがあり、各ピンはその上にバルーンを表示できます。しかし、別のピンを押すと、古いバルーンは自動的に閉じないので、他のバルーンが表示される前に毎回バルーンをクリアしたい
(BalloonItemizedOverlay を拡張します)
助けてください、ありがとう。
次のコードは、マップからすべてのBalloonOverlayItemsを削除します。
MapView.removeViews(0, MapView.getChildCount());
これは、MapView.getOverlays()。clear()(通常のオーバーレイに使用)と同等です。上記のコードは、バルーンオーバーレイを含むマップで機能します。
/**
* 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();
}
}
}
手遅れかもしれませんが、今日も同じ問題に直面していたと思います。
を使用してアイテムを削除するmapView.getOverlays().clear()
と、すべてのアイテムが削除されます。しかし、メソッド 'createAndDisplayBalloonOverlay' をBalloonItemizedOverlay.java
見ると、行が表示されるmapView.addView(balloonView, params);
のでmapView
、バルーンの参照を子として保持します。それがあなたのピンがなくなった理由ですが、バルーン1はまだ表示されています.
BalloonOverlayView
簡単な修正は、削除されたアイテムの後に methode を使用して のすべてのインスタンスを削除することmapView.removeViewAt()
です。また、実装によっては、現在表示されているバルーンを保持する必要がある場合があります。