首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在react-native-maps中刷新地图?

如何在react-native-maps中刷新地图?
EN

Stack Overflow用户
提问于 2019-01-08 17:10:06
回答 1查看 4.6K关注 0票数 1

我在位置跟踪应用程序中使用了react-native-maps。现在我想清除(刷新)地图与所有的标记和折线,而不刷新react组件,当用户停止位置跟踪(使用一个按钮).Is时,有什么方法可以做到吗?

EN

回答 1

Stack Overflow用户

发布于 2019-01-08 18:01:36

在某些情况下,如果您希望在react中更改组件上的可见内容,除了重新呈现您的组件之外,没有其他方法。

我不知道react-native-maps,但我认为这个问题可以用一般的react知识来解决。

react-native-maps中的标记和多边形是作为MapView的子项添加的,因此根据您存储标记/线的方式,您应该能够简单地依赖react的状态或道具更改来更新您的MapView

例如,如果您的标记存储在组件的状态中,您可以这样做:

代码语言:javascript
复制
class MyLocationTracker extends React.Component {
  state = { markers: [{ latlng: { latitude: 1, longitude: 1 } }] }

  render = () => {
    return (
      <View>
        <Text onPress={() => this.setState({ markers: [] })}>Reset markers</Text>
        <MapView>
          {this.state.markers.map((marker) => <Marker coordinate={marker.latlng} />)}
        </MapView>
      </View>
    )
  }
}

state发生变化时,react将再次调用render()函数并更新标记。请注意,这也将读取<MapView />组件。如果希望避免重新呈现<MapView />组件,可以将逻辑移动到仅处理标记的新组件,如下所示:

代码语言:javascript
复制
class MyLocationTracker extends React.Component {
  render = () => {
    return (
      <View>
        <Text onPress={this.markers.reset}>Reset markers</Text>
        <MapView>
          <MyMarkers ref={(comp) => { this.markers = comp }} />
        </MapView>
      </View>
    )
  }
}

class MyMarkers extends React.Component {
  state = { markers: [{ latlng: { latitude: 1, longitude: 1 } }] }

  reset = () => {
    this.setState({ markers: [] })
  }

  render = () => {
    return (
      <View>
        {this.state.markers.map((marker) => <Marker coordinate={marker.latlng} />)}
      </View>
    )
  }
}

同样,状态的更改将触发组件的重新呈现。但现在,因为只有<MyMarkers />的状态改变,它将重新呈现自己,而不是其他任何东西。

我希望这能有所帮助:)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54088485

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档