React native React Native:如何在Airbnb地图上呈现firebase中的标记列表?

React native React Native:如何在Airbnb地图上呈现firebase中的标记列表?,react-native,maps,components,react-native-android,airbnb,React Native,Maps,Components,React Native Android,Airbnb,我是一个母语反应的初学者,目前正在尝试从firebase数据库中获取标记,并将它们渲染到我的地图上。我之前将标记定义为标记:[],并用虚拟对象填充标记对象(与我从firebase数据库检索到的对象完全相同) 我在状态变量中定义初始标记对象 markers: new ListView.DataSource({ rowHasChanged: (row1, row2) => row1 !== row2, }) 最后,使用react native中的ListView

我是一个母语反应的初学者,目前正在尝试从firebase数据库中获取标记,并将它们渲染到我的地图上。我之前将标记定义为
标记:[]
,并用虚拟对象填充标记对象(与我从firebase数据库检索到的对象完全相同)

我在状态变量中定义初始
标记
对象

 markers: new ListView.DataSource({
        rowHasChanged: (row1, row2) => row1 !== row2,
      })
最后,使用react native中的
ListView
呈现此内容

<ListView
    dataSource={this.state.markers}
    renderRow={this._renderItem.bind(this)}
>
</ListView>

其中_renderItem的定义如下:

_renderItem(marker) {
    console.log(marker);
    return (
      <MapView.Marker
      coordinate={{longitude: marker.longitude, latitude: marker.latitude}}
      title={marker.description}
      description={marker.description}>
      <View style={styles.bikeRadius}>
             <View style={styles.bikeMarker}></View>
      </View>
      </MapView.Marker>
    );
  }
\u renderItem(标记){
控制台日志(标记器);
返回(
);
}
如果我将
\u renderItem
返回值设置为
{marker.description}
,则可以呈现对象的特定属性

您可以在CodePen上找到完整的代码:


标记根本不渲染。此外,在实现
组件后,我无法在地图上进一步移动或缩放。您知道如何在AirBnb MapView上合并Firebase的标记吗?标记?

您不需要列表视图,只需在
地图视图中映射标记即可:

<MapView>
  {this.state.markers.map(marker => (
    <MapView.Marker
      coordinate={{longitude: marker.longitude, latitude: marker.latitude}}
      title={marker.description}
      description={marker.description}>
      <View style={styles.bikeRadius}>
        <View style={styles.bikeMarker}></View>
      </View>
    </MapView.Marker>
  )}
<MapView>

{this.state.markers.map(marker=>(
)}

您不需要列表视图,只需在
映射视图中映射标记即可:

<MapView>
  {this.state.markers.map(marker => (
    <MapView.Marker
      coordinate={{longitude: marker.longitude, latitude: marker.latitude}}
      title={marker.description}
      description={marker.description}>
      <View style={styles.bikeRadius}>
        <View style={styles.bikeMarker}></View>
      </View>
    </MapView.Marker>
  )}
<MapView>

{this.state.markers.map(marker=>(
)}

非常感谢您的快速回答!:)不幸的是,当我尝试这个函数时,它说'this.state.markers.map'不是一个函数。我假设这是因为我有一个ListView对象?完全是。你必须有一个数组。所以,我可以成功地让标记消失,但当我在代码中更改一个条件属性时,它就不会出现了。你知道怎么回事吗?我增加了50个悬赏如果您对此感兴趣,请回答:)非常感谢您的快速回答!:)不幸的是,当我尝试这个函数时,它说'this.state.markers.map'不是一个函数。我想这是因为我有一个ListView对象?完全是这样。你必须有一个数组。因此,我可以成功地让标记消失,但当我在代码中更改条件属性时,它不会重新出现。。你知道哪里不对吗?如果你感兴趣的话,我在这上面加了50美元的悬赏:)