分享一个 mkmapview 截图

Posted

技术标签:

【中文标题】分享一个 mkmapview 截图【英文标题】:Sharing a mkmapview screenshot 【发布时间】:2013-07-22 11:15:39 【问题描述】:

我有一张地图,上面有很多东西,我想以图片/屏幕截图的形式分享。

但是,据我所知,地图——Apple 的 ios 6 和 Google 的 iOS 5——都受版权保护,我不能简单地这样做。 我想到了谷歌静态地图 API,但我没有找到类似的苹果地图可用。 我怎样才能在不违反他们的规则并仍然使用 MapKit 框架的情况下分享地图视图图片?

谢谢!

【问题讨论】:

试试这个***.com/questions/2200736/… @Kalpesh 我可以毫无问题地截取屏幕截图,我的问题是如何合法分享。 【参考方案1】:

我正在为共享 Apple 地图快照及其轨道信息的法律而苦苦挣扎。向 Apple 技术支持发送了询问,被重定向到 App Review 团队,到目前为止只得到了带有指南链接的答案。通过点击“法律”链接阅读许可证信息,是的,所有权利都是“保留的”。向 Tom Tom 发送请求,询问他们是否会对这种个人分享感到难过。

如果我们不能,Apple 的情况会相当悲惨,因为我不得不很快求助于 OSM 地图来显示轨道,而我的应用程序(我猜还有很多其他应用程序)中的 Apple 地图用例会归零。

对于答案,我正在考虑只保留一个选项来保存地图/轨道快照:“保存到相机胶卷”。如果用户可以随时截取屏幕截图,我可以只准备没有工具栏等的“更好”的图像,然后用户可以对相机胶卷中的图像做任何他们需要做的事情?我只提供他们可以自己裁剪的图像?我不需要关心他们是否以及如何分享?

所以这只是一个建议,看看它听起来是否合理......

【讨论】:

好吧,我还在为这个问题苦苦挣扎。实际上,我可以将图像保存在相机胶卷中。但是,用户很懒惰,如果我创建此版权“绕过”以重新打开他们的地图屏幕截图,那将只是分享之前的另一个令人沮丧的步骤。目前,我正在使用 Google 静态地图生成一些类似的布局。它与普通的 MKMapView 相似,但并不完全相同。好难过……【参考方案2】:

您希望如何分享它? 如果通过电子邮件,那么您可以发送嵌入在电子邮件正文中的地图,因此它甚至是交互式的。

【讨论】:

是的,在电子邮件中有很多可能性,包括 html 嵌入,但我想要一些“通用”方法,我可以以图片的形式用于 twitter 或 facebook。 那么你必须使用一些开源地图或带有许可证的地图,允许你对其进行拍照和分发。【参考方案3】:
- (UIImage *) imageFromView:(UIView *)view 

    UIGraphicsBeginImageContext(view.frame.size);
    CGContextRef currentContext = UIGraphicsGetCurrentContext();
    CGContextTranslateCTM(currentContext, 0, view.size.height);
    // passing negative values to flip the image
    CGContextScaleCTM(currentContext, 1.0, -1.0);
    [[appDelegate.scatterPlotView layer] renderInContext:currentContext];
    UIImage *screenshot = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();
    return screenshot;

只需将您的地图视图添加到 uiview 并将 pas uiview 添加到此方法,现在您可以将您的地图视图图像分享到任何地方。

【讨论】:

以上是关于分享一个 mkmapview 截图的主要内容,如果未能解决你的问题,请参考以下文章

使用 MKMapView 的 showShowsUserLocation 方法而不显示视图

MKMapView 和 setRegion:animated: 不更新地图视觉效果

从 MKMapView 找出您所在的区域类型

如何在 MKMapView 中将图钉和地图保持在移动叠加层上方的中心

iphone 6 plus 上的 MKMapView 问题,视图中嵌入的地图不显示

为啥苹果手机截图不能分享到微信?