如何更改Android的叠加标记?

use*_*849 12 android android-mapview

我做了一个应用程序,当用户点击它时,我需要更改overlayitem的drawable.我使用以下代码来实现此效果:

        protected boolean onTap(int index) {
        OverlayItem item = mOverlays.get(index);
        if(item.getTitle().equals("true")){
            if(item.getMarker(OverlayItem.ITEM_STATE_FOCUSED_MASK).equals(greenMarker)){
                item.setMarker(orangeMarker);
                view1ComplainPoleList.add(item.getSnippet());
                Log.i("adding",item.getSnippet());
                map.invalidate();
            }
            else{
                item.setMarker(greenMarker);
                view1ComplainPoleList.remove(item.getSnippet());
                Log.i("removing",item.getSnippet());
                map.invalidate();
            }
        }
        return true;
    }
Run Code Online (Sandbox Code Playgroud)

但这似乎并没有起作用.每当我点击一个overlayitem它就会从视图中消失.出了什么问题?

更新:

你能告诉我如何在滚动地图时加载新视图吗?

先感谢您.

She*_*tib 13

很简单:

protected boolean onTap(int index) {
    OverlayItem item = mOverlays.get(index);
    //Get the new Drawable
    Drawable marker = mContext.getResources().getDrawable(R.drawable.icon);
    //Set its bounds
    marker.setBounds(0,0,marker.getIntrinsicWidth(),marker.getIntrinsicHeight());
    //Set the new marker
    item.setMarker(marker);
    //Return true! Do not invalidate
    return true;
}
Run Code Online (Sandbox Code Playgroud)