iOS版谷歌地图标记上的弹跳动画?[目的-C]

Dhi*_*iru 7 animation google-maps objective-c ios

我想在iOS上的Google Map Marker上使用Continuos Bounce动画.

[动画如下链接,点击标记 - >],

https://developers.google.com/maps/documentation/javascript/examples/marker-animations

我们可以在iPhone中实现这个反弹动画吗?

我正在创建带有动画的标记,但我想连续使用弹跳效果制作标记.

GMSMarker *marker = [GMSMarker markerWithPosition:position];
marker.title = @"Delhi";
marker.zIndex=1;
marker.icon=[UIImage imageNamed:@"marker_user.png"];
// This is Only AppearAniamtion
marker.appearAnimation = kGMSMarkerAnimationPop; 
marker.infoWindowAnchor = CGPointMake(0.44f, 0.30f);
marker.map = mapView_;
Run Code Online (Sandbox Code Playgroud)

Dhi*_*iru 1

我想在 Google 地图上添加标记,该标记将通过动画来指示当前用户。我无法像上面提到的链接那样获得精确的弹跳动画,作为突出显示我使用缩放动画所做的标记的替代方法。
像这样 ... 在此输入图像描述

得到这样的动画。这样做

 GMSMarker *markerUser;
 NSTimer *timer;
 int imageScale;
Run Code Online (Sandbox Code Playgroud)

在地图上添加标记

 imageScale=15;

    CLLocationCoordinate2D position = CLLocationCoordinate2DMake(Userlat, Userlng);
    markerUser = [GMSMarker markerWithPosition:position];
    markerUser.title = @"You are here";
    markerUser.icon=[self image:[UIImage imageNamed:@"marker_user.png"] scaledToSize:CGSizeMake(25.0f,40.0f)];   // Initial Marker Size
    markerUser.appearAnimation = kGMSMarkerAnimationPop;
    markerUser.infoWindowAnchor = CGPointMake(0.44f, 0.30f);
    markerUser.map = mapView_;
Run Code Online (Sandbox Code Playgroud)

当地图上添加标记时启动计时器,并更改不同大小的标记图标。

 timer =  [NSTimer scheduledTimerWithTimeInterval:0.1
                                     target:self
                                   selector:@selector(targetMethod:)
                                   userInfo:nil
                                    repeats:YES];
Run Code Online (Sandbox Code Playgroud)

每 0.1 秒 tragetMethod 将被触发,在这里您可以缩放图标图像并重新分配给标记图标

-(void)targetMethod:(NSTimer *)timer {

    if (imageScale<30) {

        markerUser.icon=[self image:[UIImage imageNamed:@"marker_user.png"] scaledToSize:CGSizeMake(imageScale,imageScale*1.5)];

        imageScale+=1;

    }
    else{
        imageScale=15;

         markerUser.icon=[self image:[UIImage imageNamed:@"marker_user.png"] scaledToSize:CGSizeMake(imageScale,imageScale*1.5)];
    }

}
Run Code Online (Sandbox Code Playgroud)

这是扩展你的方法 UIImage

- (UIImage *)image:(UIImage*)originalImage scaledToSize:(CGSize)size
{
    //avoid redundant drawing
    if (CGSizeEqualToSize(originalImage.size, size))
    {
        return originalImage;
    }

    //create drawing context
    UIGraphicsBeginImageContextWithOptions(size, NO, 0.0f);

    //draw
    [originalImage drawInRect:CGRectMake(0.0f, 0.0f, size.width, size.height)];

    //capture resultant image
    UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();

    //return image
    return image;
}
Run Code Online (Sandbox Code Playgroud)

这可能会解决寻找此类动画的人的问题。