Tengo esta matriz en mi estado:

coinCoordinatesArray: [
        {
        latitude: 37.78825,
        longitude: -122.4324},
        {
        latitude: 38.78825,
        longitude: -120.4324},
        {
        latitude: 31.78825,
        longitude: -80.4324},
        {
        latitude: 55.78825,
        longitude: -95.4324}

Estoy tratando de representar marcadores usando coordenadas del estado:


            {this.state.coinCoordinatesArray.forEach((coordinate) => {
                        return  (<MapView.Marker
                          onPress={() => alert('fire')}
                          icon={require('./assets/coin_small.png')}
                          coordinate={coordinate}
                          />)
            })}

Sin embargo, los marcadores no se muestran en absoluto, pero tampoco recibo ningún error.

0
virtumonde 11 may. 2019 a las 12:31

3 respuestas

La mejor respuesta

Estás haciendo un forEach() que solo genera los elementos, probablemente quieras hacer un map() en su lugar, por lo que tus elementos se acumulan en una matriz y se procesan.

3
Slawomir Chodnicki 11 may. 2019 a las 09:33

En lugar de usar forEach(), que no devuelve una nueva matriz, debe usar map().

Así que reemplace:

{this.state.coinCoordinatesArray.forEach((coordinate) => { ...

Con:

{this.state.coinCoordinatesArray.map((coordinate) => { ...

Editar: Ejemplo de trabajo:

https://snack.expo.io/S1kstGNhV

Salida:

demo image

1
Tim 11 may. 2019 a las 09:45

forEach no devuelve nada, use map en su lugar:

{this.state.coinCoordinatesArray.map((coordinate) => {...})}
3
Tim 11 may. 2019 a las 09:50