yandexmapkit-android icon indicating copy to clipboard operation
yandexmapkit-android copied to clipboard

Refs issue #83

Open d-tarasov opened this issue 12 years ago • 5 comments

Как выяснилось при тапе по OverlayItem'у при показе Balloon'а большую роль играет метод, наследованный от java.lang.Comparable compareTo, который в примерах не реализован. Он определяет последовательность в которой будут отрисованы видимые на экране элементы, setPriority в данном случае роли не играет.

Возможно имеет смысл реализовать compareTo по умолчанию внутри Overlay и OverlayItem, подобным образом, чтобы при использовании дефолтного приоритета получить ожидаемое поведение:

    @Override
    public int compareTo(Object object) {
        int thisPriority = getPriority();
        int itemPriority = ((OverlayItem) object).getPriority();

        if (thisPriority < itemPriority) {
            return -1;
        } else if (thisPriority == itemPriority) {
            return 0;
        } else {
            return 1;
        }
    } 

А так же исключить однотипную реализацию данного метода из кода примеров

d-tarasov avatar Dec 14 '12 11:12 d-tarasov

Как вариант из compareTo балунов всегда можно возвращать 1, что гарантирует, что они всегда будут отображаться на самом верху вне зависимости от расстановки приоритетов

d-tarasov avatar Dec 14 '12 11:12 d-tarasov

compareTo реализован и там и там, но с дополнительной логикой

mksaint13 avatar Dec 20 '12 09:12 mksaint13

@mksaint13 что это за логика? Можно ее где-нибудь описать в документации или в вики?

d-tarasov avatar Dec 20 '12 10:12 d-tarasov

Спасибо за решение. На дворе 2017, прикручиваем яндекс карты :(

mussa-ibragimov avatar Apr 26 '17 17:04 mussa-ibragimov

Спасибо! Все работает!!!!!! Внизу полигоны (Paint.Style.FILL), сверху линии (Paint.Style.STROKE), еще выше точки, типа BalloonItem

public class Overlay2 extends Overlay { public Overlay2(MapController mapController) { super(mapController); }

@Override
public int compareTo(Object object)
{
    int thisPriority;
    int itemPriority;
    int kodz;

    thisPriority = this.getPriority();
    itemPriority = ((Overlay) object).getPriority();
    kodz = 0;
    if      (thisPriority < itemPriority) {  kodz = -1; }
    else if (thisPriority > itemPriority) {  kodz =  1; }
    return kodz;
}

}

Kavo102 avatar Apr 28 '17 08:04 Kavo102