0

私は長い間検索し、これに関連するすべてを試しましたが、成功しませんでした. 関連する回答は大歓迎です。

BalloonItemizedOverlay で次のコードを使用しました

protected void hideBalloon() 
    {
        if (balloonView != null) 
        {
            balloonView.setVisibility(View.GONE);
        }
    }


    private void hideOtherBalloons(List<Overlay> overlays) 
    {   
        for (Overlay overlay : overlays) 
        {
            if (overlay instanceof BalloonItemizedOverlay<?> && overlay != this) 
            {
                ((BalloonItemizedOverlay<?>) overlay).hideBalloon();
            }
        }
    }

そして、マップビューを設定するたびに、私は呼び出します

mapView.getOverlays().clear();
mapView.invalidate();

しかし、初めてマーカーピンをタップすると、バルーンビューが正しく取得されます。リストに戻って、異なるマーカー値で同じマップビューに戻ると、バルーンビューが開き、マーカーピンをもう一度タップすると、正しい値が取得されますが、古いバルーンビューに重なっています。

新しいオーバーレイを mapView に設定する前に、すべての balloonView を非表示にする方法。同じ Activity 内のさまざまな場所からの異なる値に対して、同じ mapView を再利用したい。

4

2 に答える 2

1

以下の gven のように実行しましたが、正常に動作しています。要件に応じてこのコードを編集する必要があります:-

 public class CustomItemizedOverlay extends ItemizedOverlay<CustomOverlayItem>{

    private ArrayList<CustomOverlayItem> mOverlays = new ArrayList<CustomOverlayItem>();




    public void addDeleteMarker{

    CustomOverlayItem overlaySosItem;

    if(mOverlays.size()!=0){

    for(i=0;i<mOverlays.size();i++){

    //---------To remove (Edit index position according to your logic)----------
    mOverlays.remove(i);


    //---------To Add Overlay-----------

    GeoPoint geoPoint = new GeoPoint((int)(yourlatitude *1e6),(int)(yourlongitude*1e6));
    overlaySosItem = new CustomOverlayItem(geoPoint, "", "");

     mOverlays.add(overlaySosItem);
    }
    }
    }
    }
于 2013-02-18T11:00:26.913 に答える
0

あなたはちょうど良いGoogle検索を行う必要があります.

ここに完全なウォークスルーがあります:

https://github.com/jgilfelt/android-mapviewballoons

于 2013-02-18T11:09:22.660 に答える