gpt4 book ai didi

objective-c - 将 MKMapView 渲染为 NSImage

转载 作者:行者123 更新时间:2023-12-03 16:40:29 24 4
gpt4 key购买 nike

我正在为我的四轴飞行器开发导航系统,我需要渲染一条航路点路线,显示在 MKMapView 中,到 NSImage以供进一步使用。

到目前为止,这就是我所拥有的:

<小时/>

Runtime screenshot

正如您从 official documentation 中看到的那样, MKMapViewNSView 的子类,因此我能够再次对其进行子类化以实现鼠标事件等。

一切都按预期进行,最后一个目标是将该 View 渲染为 NSImage 供进一步使用,例如通过自己的图像浏览最喜欢的路线。

<小时/>

我对此进行了一些研究,但没有找到我想要的东西。

我能够使用此方法渲染 map ,但没有注释/叠加

- (NSImage *)captureMapView {

__block NSImage *image;

/* Note : self is my custom subclass of MKMapKit, where everything is */
MKMapSnapshotOptions *options = [[MKMapSnapshotOptions alloc] init];
options.region = self.region;
options.size = self.frame.size;

MKMapSnapshotter *snapshotter = [[MKMapSnapshotter alloc] initWithOptions:options];

[snapshotter startWithCompletionHandler:^(MKMapSnapshot *snapshot, NSError *error) {
image = snapshot.image;

}];

return image;

}

输出:

<小时/>

The output

如您所知,路线不存在

<小时/>

更具体地说,圆圈由 MKPointAnnotation 组成。 s,路线是 MKPolyline 。注释(在我的例子中是圆圈)是通过 MKMapKit 添加的方法- addAnnotation: ,同时添加路线 - addOverlay:

我确实错过了一些东西。感谢您的帮助。

<小时/>

尽管我认为从照片中已经足够明显,但我正在 OS X 10.11.4、Objective-C 上进行开发

最佳答案

10.8 之前 bitmapImageRepForCachingDisplayInRect: 效果很好。似乎在此版本之后,它停止使用图层支持 View 。请尝试以下操作:

+ (NSImage *)cacheImageForView:(NSView *)aView
{
NSRect originRect = [aView convertRect:[aView bounds] toView:[[aView window] contentView]];

NSRect rect = originRect;
rect.origin.y = 0;
rect.origin.x += [aView window].frame.origin.x;
rect.origin.y += [[aView window] screen].frame.size.height - [aView window].frame.origin.y - [aView window].frame.size.height;
rect.origin.y += [aView window].frame.size.height - originRect.origin.y - originRect.size.height;

CGImageRef cgimg = CGWindowListCreateImage(rect,
kCGWindowListOptionIncludingWindow,
(CGWindowID)[[aView window] windowNumber],
kCGWindowImageDefault);
return [[NSImage alloc] initWithCGImage:cgimg size:[aView bounds].size];
}

关于objective-c - 将 MKMapView 渲染为 NSImage,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36204902/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com