react-native-maps:如何在按钮按下时跟随用户位置

Posted

技术标签:

【中文标题】react-native-maps:如何在按钮按下时跟随用户位置【英文标题】:react-native-maps : How to follow user location on button pres-s- 【发布时间】:2019-03-15 04:26:25 【问题描述】:

我正在使用react-native-maps,效果很好。但是我有两个问题。

    我可以使用followsUserLocation 自动跟踪用户位置,但是当我移动地图时,它会不断将我拖回用户位置。我该如何解决这个问题?

    我想要刷新按钮,当用户按下按钮时,我希望我的地图视图跟随用户位置。

    constructor() 
        super();
        this.state = 
            followsUserLocation: true,
        ;
    
    
    
    mapView() 
        return(
            <MapView style=styles.map
            showsUserLocation
            followsUserLocation=this.state.followsUserLocation
            initialRegion=
            latitude: 37.523814,
            longitude:  126.927494,
            latitudeDelta: 0.0922,
            longitudeDelta: 0.0421/>
       )
    
    

任何 cmets 或建议将不胜感激!提前致谢!

【问题讨论】:

【参考方案1】:

尝试 onUserLocationChange 回调并使用 setState 相应地设置您的区域

   state = 
    showsUserLocation: true,
    followsUserLocation : true,
    mapRegion: 
      latitude: 37.78825,
      longitude: -122.4324,
      latitudeDelta: 0.0922,
      longitudeDelta: 0.0421,
    ,
  ;

    <MapView
            style= flex: 1 
            region=this.state.mapRegion
            //use this callback to update the regions
            onUserLocationChange=event => console.log(event.nativeEvent)
            showsUserLocation=this.state.showsUserLocation
            followsUserLocation=this.state.followsUserLocation
          />

【讨论】:

在回调中 onUserLocationChange 设置 followUserLocation = false【参考方案2】:

如果你正在使用 Reack Hook 你可以创建一个 var 而不是 useState。 在我的例子中,为了防止应用程序在三元条件下崩溃。

  var liveMap = 
mapRegion: 
  latitude: lattitude ? lattitude : 19.88134866090193,
  longitude: longitude ? longitude : 73.97658792586263,
  latitudeDelta: 0.0022,
  longitudeDelta: 0.0021,
,



     <MapView
        mapType="satellite"
        style= height: 400, width: "100%" 
        showsUserLocation=false
        zoomEnabled=true
        zoomControlEnabled=true
        followsUserLocation=true
        // onUserLocationChange=(event) => console.log("this is event",event.nativeEvent)
        showsUserLocation=true
        followsUserLocation=true
        region=liveMap.mapRegion
        // initialRegion=
        //   latitude: lattitude ? lattitude : 19.88134866090193,
        //   longitude: longitude ? longitude : 73.97658792586263,
        //   latitudeDelta: 0.0022,
        //   longitudeDelta: 0.0021,
        // 
      >
        <Marker
          coordinate=
            latitude: lattitude ? lattitude : 19.88134866090193,
            longitude: longitude ? longitude : 73.97658792586263,
          
          title="JavaTpoint"
          description="Java Training Institute"
        />
      </MapView>

【讨论】:

以上是关于react-native-maps:如何在按钮按下时跟随用户位置的主要内容,如果未能解决你的问题,请参考以下文章

在 airbnb/react-native-maps 中自定义我的位置按钮

React-Native-Maps:如何动画来协调?

react-native-maps :如何在放大和缩小时获取动态 latitudeDelta 和 longitudeDelta 值

React-Native-Maps 如何绘制折线

在反应原生地图中使用 Geolocation.getCurrentPosition 时应用程序崩溃

缩放到指定的标记 react-native-maps