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

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

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

4

2 回答 2

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);
    }
    }
    }
    }
于 2013-02-18T11:00:26.913 回答
0

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

这是一个彻底的演练:

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

于 2013-02-18T11:09:22.660 回答