Flutter Google Maps 插件中的原生动画不起作用

Posted

技术标签:

【中文标题】Flutter Google Maps 插件中的原生动画不起作用【英文标题】:Native Animation in Flutter Google Maps Plugin does not work 【发布时间】:2020-09-28 06:51:03 【问题描述】:

我尝试使用 google_maps_flutter 插件在颤振应用程序中制作可动画标记(脉冲动画)。因为目前创建自定义标记的唯一方法是通过marker.icon = BitmapDescription

所以我编辑插件源代码。可以添加自己的UIView 并且可以正常工作。但是当我添加任何类型的动画时,该视图会以其最终状态出现在地图上,没有任何动画。

例如在文件GoogleMapMarkerController.m,

    UIView *myView = [[UIView alloc] initWithFrame:CGRectMake(200, 200, 100, 100)];
    myView.backgroundColor = [UIColor redColor];
    myView.layer.cornerRadius = 50;

    CABasicAnimation *scaleAnimation = [CABasicAnimation animationWithKeyPath:@"transform.scale"];
    scaleAnimation.duration = 1.5;
    scaleAnimation.repeatCount = HUGE_VAL;
    scaleAnimation.autoreverses = YES;
    scaleAnimation.fromValue = [NSNumber numberWithFloat:0.1];
    scaleAnimation.toValue = [NSNumber numberWithFloat:1.2];

    [myView.layer addAnimation:scaleAnimation forKey:@"scale"];
    [UIView animateWithDuration:100.0 delay:0 options:UIViewAnimationOptionCurveLinear  animations:^
        myView.backgroundColor = [UIColor greenColor];
     completion:^(BOOL finished) 
        //code for completion
    ];
    _marker.iconView = myView;

结果

我想 android 也一样。

那么如何解决这个问题呢?

【问题讨论】:

【参考方案1】:

试试这个包:https://github.com/gauris26/flutter_animarker

它支持波纹动画。

Animarker(
 // Other properties
 rippleRadius: 0.5,  //[0,1.0] range, how big is the circle
 rippleColor: Colors.teal, // Color of fade ripple circle
 rippleDuration: Duration(milliseconds: 2500), //Pulse ripple duration
 markers: <Marker>
  //Ripple Marker
  RippleMarker(
      markerId: MarkerId('MarkerId1'),
      position: LatLng(0, 0),
      ripple: true,  //Ripple state
 ),
 //Non-ripple marker
 Marker(
     markerId: MarkerId('MarkerId2'),
     position: LatLng(0, 0),
 ),
 ,
 // Other properties
)

【讨论】:

以上是关于Flutter Google Maps 插件中的原生动画不起作用的主要内容,如果未能解决你的问题,请参考以下文章

google_maps_flutter 或任何其他 Flutter 地图插件是不是支持谷歌地图的 kml 文件?

Flutter Google Maps 插件在 iOS 上无法正常工作

Android Studio 中的 Google Maps Flutter 出错

Flutter Google Maps - 将相机移动到当前位置

Flutter 中的 Google Maps 相机位置更新问题

Flutter Google Maps 不会横向滚动