反应原生地图(Airbnb)+标记动画

时间:2017-07-15 12:28:28

标签: google-maps animation react-native markers react-native-maps

我想为React-native-maps {Google}标记设置动画。

我尝试使用动画模块,但标记不允许使用复杂的样式。

是否有任何功能可以修改标记的坐标并给它动画?,如:

$sql = mysqli_query($conn, "SELECT * FROM stock WHERE medName = '$medName'");

$sqlQuery="insert into stock set medName= '$medName', qunty= '$qunty',phyLoc= '$phyLoc',printPrice= '$printPrice',menufName= '$menufName'";   
if (mysqli_num_rows($sql) > 0)  {
    $sqlQuery="update stock set qunty= qunty + $qunty WHERE medName = '$medName'";
}

mysqli_query($conn,$sqlQuery);

我尝试过:

marker.setAnimation(google.maps.Animation.BOUNCE);

但我无法创造效果。是否有一个将坐标编辑为动画放置的函数?

1 个答案:

答案 0 :(得分:3)

React native map marker默认为“not animated”,它不能接受gif图片,sprite,动画api等。 。但是,我能够通过图像转换为它制作动画。这是我的例子:

constructor(props, context) {
  super(props, context);
  this.state = {
    startTransition: 1,
    endTransition: 4,
  };
}

componentDidMount() {
  this.animate();
}

animate() {
  const {startTransition, endTransition} = this.state;
  if(startTransition < endTransition){
    let currentTransition = startTransition + 1;
    this.setState({startTransition: currentTransition});
  } else {
    this.setState({startTransition: 1});
  }
  let x = setTimeout(()=>{
    this.animate()
  }, 500);
}

renderImg(imgTrans) {
  if(imgTrans === 1) {
    return require('./walk1.png');
  }
  if(imgTrans === 2) {
    return require('./walk2.png');
  }
  if(imgTrans === 3) {
    return require('./walk3.png');
  }
  if(imgTrans === 4) {
    return require('./walk4.png');
  }
}

render() {
  const {startTransition} = this.state;
  return (
    <MapView.Marker
      coordinate={tapCoords}
      image={this.renderImg(startTransition)}
    >
  )
}

这就是我现在制作动画的方式。