【问题标题】:React-Native: How do I render a list of markers from firebase on Airbnb maps?React-Native:如何在 Airbnb 地图上渲染来自 firebase 的标记列表?
【发布时间】:2017-11-11 14:11:45
【问题描述】:

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

我在状态变量中定义了初始 markers 对象。

 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>
    );
  }

如果我将_renderItemreturn 值设置为&lt;Text&gt; {marker.description} &lt;/Text&gt;,我可以渲染对象的特定属性。

您将在 CodePen 上找到完整代码:https://codepen.io/yeni/pen/BZjJYq

标记根本不渲染。此外,在实现&lt;ListView&gt; 组件后,我无法在地图上进一步移动或缩放。任何想法如何在 AirBnb MapView.Markers 上合并来自 Firebase 的标记?

【问题讨论】:

    标签: react-native components react-native-android react-native-maps


    【解决方案1】:

    您不需要 ListView,您可以简单地映射到 MapView 内的标记:

    <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”不是一个函数。我认为这是因为我有一个 ListView 对象?
    • 完全。你必须有一个数组。
    • 所以,我可以成功地让标记消失,但是当我更改代码中的条件属性时,它不会重新出现。知道可能出了什么问题吗?如果你有兴趣,我加了 50 赏金 :) stackoverflow.com/questions/44699115/…
    猜你喜欢
    • 2017-01-19
    • 2022-01-10
    • 2021-08-25
    • 2020-11-11
    • 1970-01-01
    • 1970-01-01
    • 2021-03-11
    • 1970-01-01
    • 2015-11-03
    相关资源
    最近更新 更多