Open messenja opened 1 year ago
Проблема возникает из-за некорректно первого рендера на android. На ios все нормально. Снизу пример исправления.
const YMap = ({ lat = 0, lon = 0 }) => {
const [isVisible, setIsVisible] = useState<boolean>(false);
useEffect(() => {
setIsVisible(true);
}, []);
return (
<View style={styles.container}>
<YaMap
initialRegion={{
lat,
lon,
zoom: 16,
}}>
<Marker
point={{ lat, lon }}
source={require("@app/assets/images/LandmarkIcon.png")}
scale={1.5}
visible={isVisible}
/>
</YaMap>
</View>
);
};
const styles = StyleSheet.create({
container: {
flex: 1,
},
});
Проблема возникает из-за некорректно первого рендера на android. На ios все нормально. Снизу пример исправления.
const YMap = ({ lat = 0, lon = 0 }) => { const [isVisible, setIsVisible] = useState<boolean>(false); useEffect(() => { setIsVisible(true); }, []); return ( <View style={styles.container}> <YaMap initialRegion={{ lat, lon, zoom: 16, }}> <Marker point={{ lat, lon }} source={require("@app/assets/images/LandmarkIcon.png")} scale={1.5} visible={isVisible} /> </YaMap> </View> ); }; const styles = StyleSheet.create({ container: { flex: 1, }, });
У меня все равно 1 из 10 раз не прорисовываются( но раньше вообще не рендерились. спасибо. Глючная либа
У меня все равно 1 из 10 раз не прорисовываются( но раньше вообще не рендерились. спасибо. Глючная либа
Так же. Мне помогло изменить isVisible в onMapLoaded, а не в useEffect'e при монтировании
Иногда они рендерятся, иногда нет (синие точки). Бывает еще, что иконка USER пропадает. Закономерности не выявил.