问题标签 [mkmapsnapshotter]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
601 浏览

ios - MKMapSnapshotter 创建图像需要很长时间

我的 awakeWithContext 中有一个工作的 MKMapSnapshotter,想为我的 imageView 设置它的图像。

问题是,MKMapSnapshotter 速度很慢并且图像不会被设置。仅一两秒后,它就会创建快照图像。

我怎样才能解决这个问题?

0 投票
1 回答
380 浏览

ios - MKMapSnapshotter WatchKit 内存错误

在连接到 Apple Watch 的真实 iPhone 上测试我的“手表应用程序”/iOS 应用程序手表扩展时,我遇到了 MKSnapshotter 的一些重大问题!

在我的一个接口控制器中,我调用了以下函数:

这应该创建地图图像并用它填充我的 WKInterfaceImage。一旦我创建了图像,我的内存就会从大约 3 MB 跳到 20 MB 并保持在那里,即使我设置了 options = nil 和 snapshotter = nil。我还在控制台上打印了以下消息:

WatchKit Extension[9548:2529231] BSXPCMessage 收到错误消息:连接中断

但最糟糕的部分来了:当我想创建另一个快照时,我的 Watch App 由于内存错误而崩溃!我认为发生这种情况是因为快照程序在分配内存后不会释放内存......我该如何手动执行此操作或有人有其他想法?

它与 getEndRegion() 函数无关!我还使用没有选项的默认快照器对其进行了测试-> 相同的结果!

如果我在模拟器中测试应用程序一切正常!

更新:

我搜索了 MKMapSnapshotter 的文档,它说,如果应用程序在前台,它只能提供快照,因此无法从主应用程序呈现,并且分配给 iOS 手表扩展的内存太低,所以有没有别的办法??

0 投票
1 回答
446 浏览

ios - 从 WatchKit 调用时,MKMapSnapshotter completionHandler 从未在父应用程序中调用

我有这个奇怪的问题:我openParentApplication:reply:照常调用父应用程序。

它很好地完成了使用异步从互联网获取一些数据的工作,NSURLRequests但是当我想使用MKMapSnapshotter(仍在父应用程序中)获取地图图像时,它的完成块永远不会被调用。

我试图打电话:snapshotter startWithQueue:ondispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_BACKGROUND, 0)dispatch_get_main_queue()etc. 但似乎没有任何效果。

如果我直接从父应用程序或从父应用程序调用相同的代码,WKInterfaceController它就可以正常工作。

0 投票
1 回答
3988 浏览

ios - MKMapSnapshotOptions : 添加自定义引脚注释视图或 UIView 的快照

我正在尝试使用 MKMapSnapshotter 的 startWithCompletionHandler 方法获取地图视图的快照。并且我想将自定义引脚注释视图添加到快照中。我的自定义注释视图中有一个标签。所以当我获取快照时我无法显示该标签。这是代码:

如您所见,drawAtPoint 是 UIImage 的函数。我尝试使用 UIImageView 然后将标签作为子视图添加到 imageView 但我不能将 drawAtPoint 与 imageView 一起使用,所以我的问题是我无法将标签添加到 mapView 快照。

您可以在链接中看到我的意思: https ://www.dropbox.com/s/83hnkiqi87uy5ab/map.png?dl=0

谢谢你的建议。

0 投票
1 回答
83 浏览

ios - MKMapSnapshotter 将边框呈现为白色

我正在使用MKMapSnapshotter创建地图的屏幕截图,然后将其显示在UIImageView.

然而,生成的图像似乎有难看的白线,而不是标准的细红色国家(和联邦)边界。

图像视图的模拟器屏幕截图

有什么办法可以让截图看起来像原始地图?

地图视图的模拟器屏幕截图

0 投票
1 回答
335 浏览

ios - iPhone 6/6+ 上未调用 MKMapSnapshotter 'completionHandler'

我正在开发适用于MKMapSnapshotterAPI 的应用程序。
它使具有所需区域的地图快照。
从前台应用程序状态和主线程调用它的代码,如下所示:

我注意到在 iPhone 6 和 6+ 上从未调用完成处理程序,在 iOS 8 和 9 上进行了测试。
在 iOS 模拟器中,一切都按预期工作,并使用 Xcode 7、iOS 8 和 9 进行了测试。
任何想法 - 如何解决这个问题?

0 投票
2 回答
933 浏览

ios - MKMapSnapshotter startWithCompletionHandler 从未调用过

MKMapSnapshotter 的 startWithCompletionHandler 方法上的完成处理程序是否有任何理由不会被回调?(甚至没有错误!!)

我没有做任何花哨的事情,只是抓取快照并显示它,全部在前台,没有后台处理。

不同寻常的是它看起来完全随机,这意味着有时它工作得很好,有时它永远不会。

这是我的代码:

我已经在几台设备上同时测试了这一点,每台设备都运行不同的 iOS 版本: iPhone 5S 运行 iOS 8.4 iPhone 6 运行 iOS 9.2 iPhone 6+ 运行 iOS 8.2

所有 3 台设备都连接到同一个 WIFI。iPhone 6+ 几乎从不失败,而 iPhone 6 几乎总是这样。

有什么建议么?

0 投票
0 回答
45 浏览

ios - MKMapSnapshotter 完成处理程序永远不会工作

我写了这个方法来UIImageMKMapSnapshotter

虽然一切都适用于 iPhone OS9,但处理程序永远不会在我的 iPad OS 8.4.1 上被调用

地图在 iPad 上也无法正常工作。如果有人放大,则地图不会进一步加载。是不是mapkit有问题???

0 投票
1 回答
326 浏览

uitableview - 在 UITableViewController 的每个单元格中,我都嵌入了地图。有没有办法将其更改为地图的屏幕截图?

在我的 iosswift应用程序中,我有一个UITableViewController动态添加的单元格。每个单元格都有一个MKMapView嵌入的,我正在为不同坐标上的每个单元格设置地图的中心。我通过调用这个方法来做到这一点:

里面cellForRowAtIndexPath

这很好,它可以工作,但我想有很多记录会有内存问题 - 即使现在用户滚动表格时只有几个单元格 - 每个地图都会立即加载,我只能想象需要多少计算能力来做所以。

所以我的问题是 - 有没有办法将动态地图视图更改为某种可能是地图实际位置的屏幕截图?当涉及到大量细胞时,它会更快地工作吗?

0 投票
1 回答
412 浏览

ios - MKMapSnapshotter 内存崩溃 - UITableView 中的多个调用

我们有一个 iOS 应用程序,它有一个 UITableView,其中包含在单元格出现时生成的地图快照。我们使用的示例列表只是显示基于模型类中提供的纬度/经度的地图快照。我开始注意到内存崩溃,所以我将代码减少到最低限度。当我们只做快照而不对结果做任何事情时,崩溃仍然会发生。请参阅下面的代码,该代码包含在我们的自定义单元格中并通过cellForItemAtIndexPath方法调用:

didEndDisplayingCell,我确保取消 mapSnapshotter。请参阅参考(我们将模型列表保留在包含 tableview 的主 VC 类中):

请注意,在执行这最后一步之前,它早先崩溃了。但是现在,如果您开始快速向下滚动列表,它就会开始结巴并且不会停止结巴。如果您在大约 150 行的列表中上下移动,则在我们开始看到内存警告和崩溃之前需要不到 30 秒的时间。

我通过 Instruments 运行了这个,但它不是很有帮助。看起来堆和匿名 VM 分配正在逐渐增加,可能导致崩溃。见参考:

仪器截图

我在那里看到了这篇文章: MKMapSnapshotter 使用了令人难以置信的 CPU 和 RAM 但它没有得到答复,也没有真正解决为什么内存不会被释放的问题。

关于在哪里进行此操作的任何想法?提前谢谢你,如果我能提供更多信息,请告诉我。