1

Привет, ребята, я создал mapView в native-native, теперь мне нужно установить маркер исправления на текущее местоположение пользователя. Я получил текущее местоположение с помощью navigator.geolocation также установил маркер с помощью MapView. Первоначально маркер показывает правильное местоположение, но его перемещают по масштабированию и ущемлению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 было обновление моего нового региона, когда она становится изменилось, следовательно, маркер меняется на изменение региона.