如何访问react-native-map MapView的所有MapView.Markers?

时间:2017-11-13 14:55:40

标签: react-native react-native-maps

在一个反应​​原生的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>

任何提示?

1 个答案:

答案 0 :(得分:1)

您可以使用功能参考。

示例

<MapView.Marker
    coordinate={ deviation.position }
    key={deviation.Id}
    ref={(ref) => this.markers[deviation.Id] = ref}
>
  // ...
</<MapView.Marker>

// ...

this.markers[someId].showCallout();