WKInterfaceMap Watchkit 上的动画注释

Animated annotation on WKInterfaceMap Watchkit

Watchkit WKInterfaceMap 有动画注释吗?

我有35张图片组成动画。目前我正在使用 NSTimer 调用

-(void)addAnnotation:(CLLocationCoordinate2D)location withImageNamed:(NSString *)name centerOffset:(CGPoint)offset

使用不同图片名称的方法,但结果效率不高,动画也不流畅,因为每次都必须先删除以前的注释并添加一个新的。

非常感谢comment/suggestion。

我认为这不能使用WKInterfaceMap 来实现,但是可以使用WKInterfaceImage 来实现。我还没有实施所有步骤,但流程可以,

使用 MKMapSnapshotter 以选定的经纬度为中心的 UIImage 生成地图快照,

MKMapSnapshotOptions * snapOptions= [[MKMapSnapshotOptions alloc] init];
CLLocation * Location = [[CLLocation alloc] initWithLatitude:23.0300 longitude:72.5800];
MKCoordinateRegion region = MKCoordinateRegionMakeWithDistance(Location.coordinate, 300, 300);
snapOptions.region = region;
snapOptions.size = CGSizeMake(300, 300);
snapOptions.scale = [[UIScreen mainScreen] scale];

MKMapSnapshotter *mapSnapShot = [[MKMapSnapshotter alloc] initWithOptions:snapOptions];
[mapSnapShot startWithCompletionHandler:^(MKMapSnapshot *snapshot, NSError *error) {
    if (error) {
        NSLog(@"[Error] %@", error);
        return;
    }

    UIImage *image = snapshot.image;//map image
    NSLog(@"%@",image);
    [self.mapImage setImage:image];
}];
  • 资源中已经有标注图片所以动态创建 合并注释图像的图像以映射快照图像。如果你想 要从顶部添加动画,则需要渲染注释图像 从地图图像上的点 (150,0) 到 (150,150)。如果你正在生成 15 个动画图像然后你需要设置 15 个限制的循环和 每次将注释图像的 Y 增加到 150/15 = 10。保持跟踪 NSMutableArray 中的这些合并图像。你可以考虑这个 回答 用于渲染图像。

  • 使用这些动态生成的 NSMutableArray 图像并设置为 WKInterfaceImage动画实现地图标注