更改自定义标记的 zIndex 或移动到前面或模仿在反应本机地图上按下的标记

问题描述 投票:0回答:1

我有一个react-native-map,它通过在数组中加载数据并将图像显示为数组中信息的标记来工作。我在地图上运行了一个react-native-snap-carousel,当它卡入到位时,它会对所述标记的区域进行动画处理。

这效果很好,但如果 2 个或更多标记靠得很近,它们就会按数组顺序重叠。我需要该位置的标记位于前面。我可以更改数组的顺序,但这会导致重新渲染的性能问题以及跟踪其他页面中的索引的问题。

有没有一种方法可以模拟区域动画时按下的标记?这不需要 zIndexes 就可以工作。我尝试过的事情:

我尝试过更改标记的 zIndex,但这在 IOS 上不起作用。

我尝试使用以下代码编辑 AIRMapMarker.m 文件,这是不久前发布的解决方案,但根本不可靠:

- (void)setZIndex:(NSInteger)zIndex
{
    if (zIndex == 2) {  // added line
        [self setSelected:YES animated:NO]; // added line
    } else { // added line
        [self setSelected:NO animated:NO]; // added line
    } // added line
    _zIndex = zIndex;
    self.layer.zPosition = _zIndex;
}

当然这是一个非常常见的问题并且有解决方案。我到处都看过了。

谢谢

google-maps-markers z-index react-native-maps
1个回答
0
投票

我已经成功做到了,

我添加了这个:

const markerRefs = useRef([]);

我将其添加到标记中:

ref={(ref) => (markerRefs.current[index] = ref)}

当我加载数据时,我可以将其添加到 where 语句中以集中在该标记上:

markerRefs.current[index].showCallout(),

很简单,但是网上关于这个的信息不是很多,这是将标记移到其他人前面(主要是IOS)的最简单也是唯一的方法(我认为)如果不太清楚,请大声喊我,我会详细了解。谢谢

© www.soinside.com 2019 - 2024. All rights reserved.