react-native-yamap icon indicating copy to clipboard operation
react-native-yamap copied to clipboard

При множестве маркеров не выбирается нужный на Android

Open Metallistener opened this issue 3 years ago • 6 comments

@ownikss Замечен баг на android, если кликать на нужный маркер то координаты резко меняются на другие, то есть после клика выбирается координат маркера верно но после этого будто происходит еще один невидимый клик по карте который перебивает координаты выбранного маркера. Такое происходит только на android. Если вместо onPress у Marker использовать onLongPress то все нормально работает, но в моем случае onLongPress не актуален так как нужна моментальная обработка клика. Есть идеи почему это может быть? z-index у Marker тоже пробовал выставить, не помогает(

Metallistener avatar Sep 20 '21 11:09 Metallistener

@Metallistener нашел решение?

aylok1n avatar Mar 28 '22 12:03 aylok1n

баг на android, @ownikss. Недавно обнаружил тоже самое, есть у кого нибудь решение проблемы? Android отрабатывает в несколько кликов. По IOS - все нормально. Могу предположить, что Android не понимает zIndex, насколько знаю android воспринимает только elevation.

youngblader avatar May 26 '22 13:05 youngblader

@Metallistener @youngblader @aylok1n Удалось найти решение проблемы ?

wfrsnk avatar Jun 22 '23 13:06 wfrsnk

@wfrsnk нет, проект провалили, денег не получили. Библа топ)

aylok1n avatar Jun 22 '23 13:06 aylok1n

Here is the workaround:

const [lastMarkerClickTimestamp, setLastMarkerClickTimestamp] = useState(Date.now());
<YMarker
   // props
   onPress={() => {
        const now = Date.now();
        if (now - lastMarkerClickTimestamp < 300) return; // 300 ms is fine, but tuneable
        setLastMarkerClickTimestamp(now);
        onPressMarker(marker);
   }}>
    // children
</YMarker>

Feel free to use.

Splinterjke avatar Aug 21 '23 11:08 Splinterjke

на реальном устройстве не работает, в эмуляторе работает

Here is the workaround:

const [lastMarkerClickTimestamp, setLastMarkerClickTimestamp] = useState(Date.now());
<YMarker
   // props
   onPress={() => {
        const now = Date.now();
        if (now - lastMarkerClickTimestamp < 300) return; // 300 ms is fine, but tuneable
        setLastMarkerClickTimestamp(now);
        onPressMarker(marker);
   }}>
    // children
</YMarker>

Feel free to use.

pavlenstory avatar Jun 20 '24 11:06 pavlenstory