GoogleMaps SDK for iOS上有标记animation吗?

有没有可能在GMSMapView用animation移动/旋转GMSMarker

在1.2中的补充是GMSMarker类有一个animated属性 – 我认为你只需将它设置为YES ,然后通过设置其map属性(我还没有尝试过)将标记添加到地图。

https://developers.google.com/maps/documentation/ios/reference/interface_g_m_s_marker

 GMSMarker *marker = [[GMSMarker alloc] init]; marker.position = CLLocationCoordinate2DMake(-33.8683, 151.2086); marker.title = @"Sydney"; marker.snippet = @"Australia"; marker.animated = YES; marker.map = mapView_; 

我认为这意味着当标记放到地图上时,标记会变成animation – 而不是像这个原始问题那样可以制作一个高速的animation标记。

不,我担心他们不是我们无法访问Google地图访问的OpenGL上下文。 最好的办法是将标记旋转为需要重画的UIImage,或者你可以移动一个标记,但它会跳转,除非你以非常小的增量进行!

我build议向Google报告一个错误,他们可能会包含它

我的解决scheme是inheritanceGMSMarker类,并使用定时器添加对PNG序列的支持。 这里是代码的粗略草图:

。H:

 #import <GoogleMaps/GoogleMaps.h> @interface AnimatedGMSMarker : GMSMarker @property (nonatomic, strong) NSString *animationBaseName; -(void)setAnimation:(NSString *)name forFrames:(NSArray *)frames; @end 

.M

 #import "AnimatedGMSMarker.h" @implementation AnimatedGMSMarker{ int _currentFrame; NSArray *_frameArray; NSTimer *_timer; } -(void)setAnimation:(NSString *)name forFrames:(NSArray *)frames{ _frameArray = frames; _currentFrame = 0; _animationBaseName = name; self.icon = [UIImage imageNamed:[NSString stringWithFormat:@"%@%@",_animationBaseName,_frameArray[_currentFrame++]]]; _timer = [NSTimer scheduledTimerWithTimeInterval:1.0/24.0f target:self selector:@selector(onRefreshTimer:) userInfo:nil repeats:YES]; } -(void)onRefreshTimer:(NSTimer *)timer{ self.icon = [UIImage imageNamed:[NSString stringWithFormat:@"%@%@",_animationBaseName,_frameArray[_currentFrame++]]]; if (_currentFrame >= _frameArray.count){ _currentFrame = 0; } } @end 

然后,一旦你实例化一个,只是发送这样的东西:

 [self.myAnimatedMarker setAnimation:@"some_library_name" forFrames:@[@0,@1,@2,@3,@4,@5,@6,@7,@8,@9]]; 

并确保您的库有一堆相同大小和注册名为“some_library_name0”“some_library_name1”等等的PNG。帧数组处理允许您重复帧而不创build新的PNG。

性能方面,在模拟器中animation非常慢,但在设备上看起来非常好。

祝你好运!

现在标记只有一个选项可以显示animation。

最近为谷歌地图SDK的iOS集群化库提供animation崩溃/解体。 我使用的方法是通过手动位置更新的animation。 如果屏幕上有很多标记同时animation(即使所有可能的背景和结果caching计算),都需要很多优化和限制。 所以现在最好还是考虑一下,如果你真的需要使用Google Maps SDK for iOS或者有时候需要这样的animation,特别是在较旧的设备上,那么你必须使用的优化将完全禁用你的自定义animation。