微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在react-map-gl中动画geojson位置

如何解决在react-map-gl中动画geojson位置

我一直在尝试像ReactJS应用上的动画那样制作超级动画,一旦用户开始乘车,出租车就会根据后端每5秒钟发送一次的坐标更新出租车的位置。但是标记的位置永远不会更新,即使它只是在很小的区域内移动而不会沿着路径前进。

一旦接受乘车,我就会使用Hasura订阅出租车位置坐标。

useEffect(() => {
if (rideFound) {
  console.log('found ride');
  subscribeRideLocation(props.details.vehicle.id,(res) => {
    const loc = res.data.yt_vehicle[0].location.replace('(','').replace(')','').split(',');
    setRideData({ coordinates: loc,type: 'Point' });
  });
}
},[rideFound]);

一旦安装了组件,我就将requestAnimationFrame调用,并使用引用来取消动画以进行清理。

const animationRef = React.useRef();

const animatePoint = () => {
animationRef.current = requestAnimationFrame(animatePoint);
};

useEffect(() => {
animatePoint();
return () => {
  cancelAnimationFrame(animationRef.current);
};
},[]);

这是渲染功能

{rideData !== null && (
        <Source type="geojson" data={rideData}>
          <Layer {...pointLayer} />
        </Source>
      )}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。