问题标签 [mktileoverlay]
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.
ios - MKTileOverlay 和 PINCache 库的 iOS / MapKit 缓存管理问题
我正在使用 MapKit 通过在 mapView 上添加 MKTileOverlay 来创建卫星和雷达动画。
使用 UISlider 和 PlayButton,我可以通过播放 MKOverlayRenderer 的 alpha(根据滑块的位置将它们设置为 0 或 0.75)来创建动画,例如 GIF。
动画非常流畅,我所有的卫星和雷达图块都在 mapView 上正确加载。
我在缓存管理方面遇到了一个问题。
我意识到 MapKit 没有为我的 tileOverlay 使用缓存,这就是为什么我使用库 PINCache 来保存我的图块,这样它就不会在我每次播放动画时请求和下载图像。
我的实现:
我重写了该方法URLForTilePath
以构建我的 URL 来获取我的平铺图像。
将调用的关键方法URLForTilePath
是我的实现loadTileAtPath
:
基本上我想要实现的是:
- 检查我是否缓存了数据,如果有,则获取对象。
- 如果没有,我会发出请求以下载具有
URLForTilePath
. - 然后我将对象设置为缓存。
- 该字符串
str
是我的缓存管理密钥 - 为了对图块进行排序和区分,我有 2 个重要值、类型(雷达或卫星、不同的图像、不同的 URL)和日期。
我可以看到缓存管理正在运行,叠加层的渲染速度更快,但我遇到的主要问题是它没有在相应的坐标处加载和构建图块。
我的 mapView 就像一个错误构建的世界的拼图。
用我的一段代码,你能看出我做错了什么吗?
ios - 离线地图图块已停止显示
我已经下载了缩放 15 到 18 的小镇的瓷砖。它们按预期显示,但现在没有。我在 Yosemite 上使用 xcode 7 和 swift 2。我现在在 sierra 上使用带有 swift 3 的 xcode 8.1。我很确定问题在升级之前就开始了,但是没有时间机器可以回去。我升级是因为我想在我的 iPad 2 上测试应用程序,收到 xcode 与 ipad 上的 ios 不兼容的消息,然后收到 xcode 8.1 无法加载到 Yosemite 的消息,因此升级到 sierra。代码如下。控制台输出如下。没有给出错误
控制台输出
ios - iOS MKMapView 加载自定义图块优化
我开发了带有自定义 TileOverlay 的 iOS 地图应用程序,它从我们自己的服务器加载图块。我扩展了 TileOverlay 类,它获取瓦片数据如下:
该应用程序正常工作,但是当我快速放大/缩小或平移到随机方向时,图块加载速度非常慢。尤其是在 iPad 中,加载当前视图大约需要一分钟。我在方法中添加了 print(path.z)"loadTile"
并意识到 mapView 请求不在所选区域中的图块。结果,所选区域的加载速度非常慢。我if
给线程执行块设置了条件
它多次增强了加载瓷砖,但加载完成时,有空白瓷砖。这是因为缩放级别没有正确计算(我找到了几种查找缩放级别的方法,但对于这个问题没有一个是确定的)。
我正在使用 MapKit sdk,Swift 的版本是 3.0
所以我的问题是,如何优化瓷砖加载过程?如何取消不必要的线程?对此类问题的任何建议。提前致谢。
ios - 自定义图块未从 Documents 文件夹加载
我正在使用以下代码将自定义地图图块加载到我的应用程序中。当我使用 mainBundle 作为路径时,它按预期工作:
但是,如果我尝试更改文档文件夹的路径(因为我打算下载瓷砖文件夹并将它们存储在文档文件夹中),则以下代码不起作用:
任何提示都会很有用!
注意: tiles 文件夹存在于我的路径中。更具体地说,以下代码返回 YES
ios - MKTileOverlay 与 MTiles 数据库
有没有办法将MKTileOverlay与MBTiles数据库一起使用?当覆盖区域越来越大时,直接在本机文件系统上存储许多小文件(切片)效率非常低。将它们放在一个地方会容易得多。但是,我找不到任何有关如何MBTiles
使用MKtileOverlay
.
android - 如何在 iOS 中使用带有自定义地图服务器、Swift 任何 Libraray 的 openstreet 地图?
我们有自己的开放式街道地图服务器,maintain
由我们公司提供。对于Android和iOS,我们计划使用这个Map Server,就像
“ http://maps.mycompanyname.com/osmtiles/15/23655/15748.png。”
对于 Android,他们为所有显示、路由和所有这些事情提供了惊人的osmdroid 。它完美地工作。但是对于iOS,我们找不到这样的库。我们正在尝试使用MKMapView来做到这一点custom tiles
,但没有成功。
喜欢拥有的功能,
- 用标记显示任何给定的位置。
- 显示多个标记点。
- 导航支持(可选)
希望您对此提供任何指导。请帮我解决一下这个。
ios - 在 MKTileOverlay 上绘制 MKPolyLine 时的性能问题
我有一个 MKMapView,用户可以在其中选择是否要使用 Apple Maps 或替代地图源。在该地图上,我绘制了一条 MkPolyline 显示当前航向。通过删除和添加该行,该行每秒更新一次。我的应用程序进行了许多其他计算,在调试模式下,使用 Apple 地图时 CPU 级别约为 20%。如果我添加 MKTileOverlay 以使用替代地图源,CPU 级别将增加到 140% 左右。
有人知道这是什么原因吗?使用 MkTileOverlay 有什么不同?
ios - openweathermap MKTileOverlay 不在地图视图中显示
我试图阅读尽可能多的关于这个主题的文章。AFAIK 我这样做是正确的,但是我的地图从未显示我的通话结果。我试图查看 precipitation_new 图层并在测试时将我的模拟器位置设置为当前显示降水的区域,但我在地图上从未看到任何内容。这也是我第一次尝试使用 MKTileOverlay。
我已经尝试将 canReplaceMapContent 更改为 NO 和 YES,并以相同的结果更改 alpha。
我已验证我的地图委托已连接并正在处理我的所有其他地图调用。我也知道我正在下载请求,因为 openweathermap 因过于频繁地调用他们的站点而阻止了我几次(我现在只能获得 60 个请求/分钟)。
我正在执行以下操作:
一个小问题:我如何计算我提出的请求数量?似乎我这样做的方式并没有计算我提出的所有请求,而且我很快就被关闭了。
谢谢你的帮助。
[编辑] 实际上,我确实对其进行了子类化以缓存图块,但是图块始终是白色的(当我在浏览器中复制/粘贴链接时),但我仍然没有看到它们出现在地图上。该贴图仅显示法线贴图(未更改)。我尝试将“canReplaceMapContent”更改为 false,结果相同。我确认我到达了结果(数据,零)行,它在应该包含降水的图块上显示了 1444 个字节的计数。我使用另一个雷达应用程序来验证我正在寻找的地方有雨。这是我的代码: