1

嘿傢伙我已經在react-native中創建了一個mapView現在我必須在用戶當前位置上設置修復標記。我已經使用navigator.geolocation獲取當前位置使用MapView.Marker設置標記初始標記顯示正確的位置,但得到移動縮放和捏MapView.Marker不穩定用戶當前位置移動縮放和捏

這是我的代碼。

getInitialState() { 
    return { 
     region: { 
     latitude: LATITUDE, 
     longitude: LONGITUDE, 
     latitudeDelta: LATITUDE_DELTA, 
     longitudeDelta: LONGITUDE_DELTA 
     }, 
    }; 
    }, 

    componentDidMount: function() { 
    navigator.geolocation.getCurrentPosition(
     (position) => { 
     this.setState({ 
      region: { 
      latitude: position.coords.latitude, 
      longitude: position.coords.longitude, 
      latitudeDelta: LATITUDE_DELTA, 
      longitudeDelta: LONGITUDE_DELTA 
      } 
     }); 
     }, 
    ); 

    this.watchID = navigator.geolocation.watchPosition((position) => { 
     const newRegion = { 
     latitude: position.coords.latitude, 
     longitude: position.coords.longitude, 
     latitudeDelta: LATITUDE_DELTA, 
     longitudeDelta: LONGITUDE_DELTA 
     } 

     this.onRegionChange(newRegion); 
    }); 
    }, 

這裏是渲染方法

render() { 
    return (
     <View style={styles.container}> 
     <MapView 
      ref="map" 
      style={styles.map} 
      region={this.state.region} 
      onRegionChange={this.onRegionChange} 
     > 
      <MapView.Marker coordinate={this.state.region}> 
      </MapView.Marker> 
     </MapView> 

有誰能夠在幫助呢? 在此先感謝

回答

2

以下是解決方案。這是更新的代碼

componentDidMount: function() { 
    navigator.geolocation.getCurrentPosition(
     (position) => { 
     this.setState({ 
      region: { 
      latitude: position.coords.latitude, 
      longitude: position.coords.longitude, 
      latitudeDelta: LATITUDE_DELTA, 
      longitudeDelta: LONGITUDE_DELTA 
      } 
     }); 
     }, 
    ); 
    }, 

    render() { 
    return (
     <View style={styles.container}> 
     <MapView 
      ref="map" 
      style={styles.map} 
      region={this.state.region} 
      onRegionChange={this.onRegionChange} 
     > 
      <MapView.Marker coordinate={this.state.region} /> 

     </MapView> 

問題是navigator.geolocation.watchPosition它來更新我的新區域時,它正在得到改變,因此該標誌被改變的區域的變化。