yandexmapkit-android
yandexmapkit-android copied to clipboard
Refs issue #83
Как выяснилось при тапе по 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;
}
}
А так же исключить однотипную реализацию данного метода из кода примеров
Как вариант из compareTo балунов всегда можно возвращать 1, что гарантирует, что они всегда будут отображаться на самом верху вне зависимости от расстановки приоритетов
compareTo реализован и там и там, но с дополнительной логикой
@mksaint13 что это за логика? Можно ее где-нибудь описать в документации или в вики?
Спасибо за решение. На дворе 2017, прикручиваем яндекс карты :(
Спасибо! Все работает!!!!!! Внизу полигоны (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;
}
}