MapView中的气球视图未隐藏

时间:2013-02-18 10:35:47

标签: android android-mapview

我已经搜索了很长时间并尝试了与此相关的所有内容,但我没有成功。欢迎任何相关的答案。

我在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时,我都会调用

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

但是我第一次点击markerpin,我正确地得到了balloonView。当我回到列表并再次使用不同的标记值返回相同的mapview时,我将打开balloonView,当我再次点击markerpin时,我得到正确的值,但在旧的BalloonView上重叠。

如何在将新叠加层设置到mapView之前隐藏所有balloonView。 我想为同一个Activity中不同位置的不同值重用相同的mapView。

2 个答案:

答案 0 :(得分:1)

我已经按照下面的说明完成了它,并且它已成功运行。您必须根据您的要求编辑此代码: -

 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);
    }
    }
    }
    }

答案 1 :(得分:0)

你只需要做一个很好的谷歌搜索。

这是一个彻底的演练:

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