在一个反应原生的app usig react-native-maps中,我试图以编程方式显示特定MapView.Callout
中的MapView.Marker
。我打算使用showCallout方法,但还没有找到如何访问所有MapView的标记,从那里我可以根据它的id / key / ref选择正确的标记。
标记在地图循环中渲染到MapView上,如下所示。
Sofar我尝试使用this.refs.mapView.refs / this.refs.mapView.children获取所有MapView的标记但没有成功,但我没有得到任何东西。
<MapView>
ref={'mapView'}
...
>
{this.props.screenProps.appState.cachedDeviations.map(deviation => {
return (
<MapView.Marker
coordinate={
deviation.position
}
key={deviation.Id}
ref={deviation.Id}
>
<MapView.Callout style={styles.callout}>
<DeviationCallout
...
/>
</MapView.Callout>
</MapView.Marker>
)
})
}
</MapView>
任何提示?
答案 0 :(得分:1)
您可以使用功能参考。
示例强>
<MapView.Marker
coordinate={ deviation.position }
key={deviation.Id}
ref={(ref) => this.markers[deviation.Id] = ref}
>
// ...
</<MapView.Marker>
// ...
this.markers[someId].showCallout();