React-Native:如何确定MapView当前是否正在跟踪用户位置?

时间:2016-06-12 20:25:07

标签: ios maps react-native

我正在构建一个使用MapView的ReactNative iOS应用程序。 (实际上,我现在正在测试react-native-maps,但我认为它们至少大致相似。)

我想实现一个“围绕我的中心地图”功能,类似于Apple的Maps.app中的功能。

在这两个屏幕截图中的第一个(对不起大小),蓝色按钮突出显示,地图正确定位在我当前位置周围:

Centered on me

在第二个屏幕截图中,我对地图进行了一些平移,使其不再以我当前位置为中心,按钮不再突出显示。

I panned the map

如果我点按该按钮,地图会再次快速回到当前位置。

如何在自己的应用中实现此按钮?

我没有看到任何方法来访问地图的状态(即是否跟踪用户的位置)。

1 个答案:

答案 0 :(得分:0)

首先,说

  

(实际上,现在我正在测试反应原生地图,但我认为它们至少大致相似。)

不正确,因为他们使用不同的本机文件来处理React和iOS / Android之间的桥梁。

关于react-native-maps,您可以使用记录为hereanimateToCoordinate方法为地图中心坐标设置动画。为此,您应该为您的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}
  );
}

然后从按钮调用此方法。