2016-04-08 3 views
1

Ich bin ein Anfänger in RN und ich habe einige Probleme mit MapView und Geolocalizer. Jemand kann helfen? Seine eigentlich 2 Ausgaben in einem: Ich möchte die mobile Geolocation kennen und eine Karte mit seinem lat/long rendern. So, hier ist was ich versuche: Mit componentWillMount Funktion die Geolokalisierung mit dem vorgeschlagenen Code zu erhalten: (dies zu versuchen, den Staat mit den Koordinaten zu setzen, bevor machen)Android (RN): Wie lat/long von MapView vor dem Rendern einstellen? Regionsupdate Fehler

navigator.geolocation.getCurrentPosition(
 
(position) => { 
 
var initialPosition = JSON.stringify(position); 
 
this.setState({initialPosition}); 
 
}, 
 
(error) => alert(error.message), 
 
{enableHighAccuracy: true, timeout: 20000, maximumAge: 1000} 
 
);

Der Zustand initialPosition setzt nach rechts, aber ich muss auch den Breiten- und Längengrad setzen. Beucase JSON.stringify (position) ist ein String mit vielen anderen Eigenschaften, also wie kann ich etwas tun x = position (der Funktion) oder x = navigator.geolocation return, weil, wenn ich versuche, eine var x = initialPosition nach this.setState (um zu behandeln und bekomme nur lat/long von x nach), es nicht tut erhalten Sie einen beliebigen Wert, wenn der Code nicht funktioniert, bis ComponentWillMOunt endet. IDK.

Warum versuche ich das? Denn wenn ich versuche, die Mapview mit dem neuen lat rerender/lang aus dem Zustand initialisiert ich diese Fehlermeldung erhalten:

Android: Fehler beim Aktualisieren der Eigenschaft ‚Region‘ eine Ansicht verwaltet von: Airmap: https://github.com/lelandrichardson/react-native-maps/issues/140

Hinweis: Ich habe das lat/long Delta, wie der Beitrag vorschlagen (nicht meine Post) Wie kann ich das tun? Idk, wenn die Art, die ich tun möchte, auch möglich ist, wird jeder Vorschlag geschätzt. Vielen Dank!

Antwort

0

Sie benötigen latDelta und lonDelta. Wenn es nicht läuft, fügen Sie mehr

<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/> 

in android/app/src/main/AndroidManifest.xml

0

Sie können in componentDidMount aktuellen Position().

componentDidMount() { 
    navigator.geolocation.getCurrentPosition(
     position => { 
      this.setState({ 
       region: { 
        latitude: position.coords.latitude, 
        longitude: position.coords.longitude, 
        latitudeDelta: 0.0922, 
        longitudeDelta: 0.0422, 
       } 
      }); 
     }, 
     (error) => console.log(error.message), 
     { enableHighAccuracy: true, timeout: 20000, maximumAge: 1000 }, 
    ); 
} 

In machen, verwenden Sie wie unten:

<MapView 
    provider={PROVIDER_GOOGLE} 
    style={StyleSheet.absoluteFillObject} 
    region={this.state.region}/>