2016-06-12 19 views
0

私は、MapViewを使用するReactNative iOSアプリケーションを構築しています。 (実際には今はreact-native-mapsをテストしていますが、少なくともほぼ同じだと思っています)React-Native:MapViewが現在ユーザーの場所を追跡しているかどうかを確認するにはどうすればよいですか?

アップルのMaps.appに似た「センターマップ」機能を実装したいと考えています。これら2つのスクリーンショット(サイズのため申し訳ありません)の最初の

は、青ボタンが強調表示され、マップが正しく私の現在位置の周囲に配置されている:第二のスクリーンショットで

Centered on me

、私はマップをもう一度パニングして、私の現在の位置を中心にしなくなり、ボタンが強調表示されなくなりました。

I panned the map

私はボタンをタップすると、マップは再び私の現在の場所にスナップします。

このボタンを自分のアプリに実装するにはどうすればよいですか?

私はマップの状態にアクセスする(つまり、ユーザーの場所を追跡しているかどうか)方法はありません。彼らが反応とiOS/Androidの間のブリッジを処理するために別のネイティブファイルを使用しているように、その

(Actually, right now I'm testing react-native-maps, but I think they're at least largely similar.)

言っ

答えて

0

まず、真実ではありません。

反応ネイティブマップについてはhereと記載されているanimateToCoordinateメソッドを使用してマップ中心座標をアニメートできます。これを行うには、MapViewを参照する必要があります(MapView.Animatedクラスを使用することもできます)。

基本的に、あなたはこの

<MapView.Animated 
    ref="map" 
    showsUserLocation={true} 
/> 

ようなあなたのマップを宣言し、そのメソッドを作成することができます

centerOnUser(){ 
    navigator.geolocation.getCurrentPosition(
    (position) => { 
     this.refs.map.refs.node.animateToCoordinate(position.coords) 
    }, 
    (error) => alert(error.message), 
    {enableHighAccuracy: true, timeout: 20000, maximumAge: 1000} 
); 
} 

をそして、あなたのボタンから、このメソッドを呼び出します。

+0

OK、それは私の質問の一部には答えますが、すべてではありません。私はマップが現在のユーザーの場所から離れてパンされる時を知る方法についてのアドバイスについても期待していました。 – escouten

+0

これは、MapViewのonRegionChange/onRegionChangeComplete関数のpropで行うことができます。現在の地域(lat lngとlat、lng delta)を引数とし、それをユーザーの場所と比較することができます。ユーザーの場所が地域内にない場合は、conterOnUserを呼び出すことができます。これは役に立ちますか? – user2015762

+0

これは「うまくいきますが、Apple Mapsアプリほどスムーズではありません。受け入れても、より良い答えを期待している。 – escouten

関連する問題