2017-11-13 5 views
0

In einer reaktiven nativen App usig react-native-maps versuche ich programmatisch die MapView.Callout einer bestimmten MapView.Marker unter vielen zu zeigen. Ich plane, die showCallout-Methode zu verwenden, habe aber noch nicht herausgefunden, wie man auf alle MapView-Marker zugreift, von wo aus ich die richtige anhand ihrer ID/Schlüssel/Referenz auswählen kann.Wie Zugriff auf alle MapView.Markers eines react-native-Maps MapView?

Die Markierungen werden in einer Map-Schleife wie unten dargestellt auf das MapView gerendert.

Sofar Ich habe versucht, ohne Erfolg, alle MapView-Markierungen mit this.refs.mapView.refs/this.refs.mapView.children zu bekommen, aber ich bekomme nichts dort.

<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> 

Irgendwelche Hinweise?

Antwort

0

Sie können Funktionsref.

Beispiel

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

// ... 

this.markers[someId].showCallout(); 
+0

Ah, einfach und elegant, danke! – Jonulf

Verwandte Themen