0

我有一个类可以扩展ItemizedOverlay<OverlayItem>为将 200 个标记放在MapView. 现在我希望 1 个特定标记始终位于其他标记之上。

我该怎么做?

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

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?
    }
}

我试图将标记重新评估为DrawabletopMarkerOverlayItem但没有成功。我还尝试删除并将其添加topMarkerOverlayItem到 s 列表中OverlayItem

4

1 回答 1

2

尝试ItemizedOverlay为您的特殊标记做一个额外的,并将其添加到列表ItemizedOverlay的末尾。将遍历所有从 0 开始到 Overlays.count()。这样,您的特殊叠加层应该被绘制为最后一个,因此始终位于顶部!MapView.getOverlays()MapViewOverlays

于 2012-10-19T14:40:14.820 回答