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

Drawableマーカーをに再割り当てしようとしましたがtopMarkerOverlayItem、機能しませんでした。topMarkerOverlayItemまた、を削除してリストに追加しようとしましたOverlayItem

4

1 に答える 1

2

ItemizedOverlay特別なマーカー用に追加してItemizedOverlay、リストの最後に追加してくださいMapView.getOverlays()。0からOverlays.count()までMapViewのすべてをトラバースします。Overlaysこのように、あなたの特別なオーバーレイは最後のものとして描かれるべきであり、したがって常に一番上にあります!

于 2012-10-19T14:40:14.820 に答える