11

我们偶然发现了这样一个问题。

我们正在开发一个旅行应用程序。为了确保用户不会在我们的应用程序中花费太多的漫游费用,我们决定实施一个设置选项,让用户只查看缓存的地图。所以我们让用户决定他是想从互联网加载地图还是他想省钱并查看缓存的地图(存储在 Library/Caches/MapTiles/MapTiles.sqlitedb 中)。

我们找不到实现这一点的方法。在这种情况下,有没有办法以编程方式禁用网络?或者强制 MapKit 只使用缓存的瓦片?我们考虑以编程方式更改 APN 以强制 MapKit 离线。是否可以以编程方式更改 APN?

谢谢!

4

4 回答 4

4

iPhone SDK 应用程序无法访问网络适配器设置,而且我不知道 MapKit API 中没有任何内容可以让您控制其 Internet 使用。在这种情况下,您最好的选择可能是显示提示用户启用飞行模式或关闭数据漫游的警报。

于 2009-12-24T20:58:27.543 回答
2

使用openstreetmap 认为它的商业方面 云制作允许离线地图

http://developers.cloudmade.com/projects/show/iphone-sdk

帮助 iPhone 开发人员使用 OSM 地图的库 route-me 是一个开源库,在许多 iPhone 应用程序中用于显示 OSM 地图。CloudMade iPhone Maps Library 是一个开源库,提供对 CloudMade 基于 OSM 的不同大小和不同样式的地图图块的高级访问。John McKerrell 已将 gosmore 的路由算法移植到 iPhone 上运行,并成功生成了基本路由。更复杂的路线目前让 iPhone 崩溃

于 2010-07-14T12:07:10.670 回答
0

有一些方法。一种是使用您自己的图块叠加层并在 URLForTilePath: 或 loadTileAtPath:result 中实现缓存算法:

它适用于开放域和一些私有域。不缓存标准 Apple 地图。

另一种能够缓存所有内容的方法是子类 NSURLProtocol。有一些教程,您可能会检测到什么时候是地图图像并采取相应的行动

于 2015-02-18T21:39:38.363 回答
-1

谷歌地图应用程序有缓存功能...... MapKit 似乎没有,我认为苹果会在下一个版本的 SDK 中添加这个功能......

于 2009-12-25T05:48:46.430 回答