将特定的overlayitem移到顶部

时间:2012-10-19 14:23:12

标签: android android-mapview

我有一个扩展ItemizedOverlay<OverlayItem>的类,可以在MapView上放置200个标记。 现在我想要一个特定的标记始终位于其他标记之上。

我该怎么做?

这是我将标记添加到叠加层的方式:

boolean isTopMarker;
for (Location location : locationList) {
    isTopMarker = location.getTitle().equals("MyMarker");
    markerOverlay.addOverlayItem(location.getLatitude(), location.getLongitude(), location.getTitle(), isTopMarker);
}
markerOverlay.moveTopMarkerToTop();

MarkerOverlay类中的方法:

@Override
protected OverlayItem createItem(int i) {
    return mOverlays.get(i);
}

@Override
public int size() {
    return mOverlays.size();
}

public void addOverlayItem(OverlayItem overlayItem, boolean isTopMarker) {
    if (isTopMarker) {
        Drawable markerDrawable = getResources().getDrawable(R.drawable.marker_top);
        boundCenterBottom(markerDrawable);
        overlayItem.setMarker(markerDrawable);
        topMarkerOverlayItem = overlayItem;
    }
    mOverlays.add(overlayItem);
    populate();
}

public void addOverlayItem(double latitude, double longitude, String title, boolean isTopMarker) {
    GeoPoint point = new GeoPoint((int) (latitude * 1000000), (int) (longitude * 1000000));
    OverlayItem overlayItem = new OverlayItem(point, title, null);
    addOverlayItem(overlayItem, isTopMarker);
}

public void moveTopMarkerToTop(){
    if(topMarkerOverlayItem != null){
        //What to do here?
    }
}

我尝试将标记Drawable重新分配给topMarkerOverlayItem,但这不起作用。我还尝试删除并将topMarkerOverlayItem添加到OverlayItem s。

列表中

1 个答案:

答案 0 :(得分:2)

尝试为您的特殊标记额外添加ItemizedOverlay,并在ItemizedOverlay列表的末尾添加此MapView.getOverlays()MapView将遍历从0开始到Overlays.count()的所有Overlays。这种方式你的特殊叠加应该作为最后一个绘制,因此总是在最顶层!