我们偶然发现了这样的问题。
我们正在开发旅行应用程序。为了确保用户不会在我们的应用程序中花费太多钱来漫游费用,我们决定为用户实现一个设置选项,仅用于查看缓存的地图。因此,我们让用户决定是否要从互联网加载地图,或者他想省钱并查看缓存地图(存储在Library / Caches / MapTiles / MapTiles.sqlitedb中)。
我们找不到实现此方法的方法。在这种情况下,有没有办法以编程方式禁用网络?或者强制MapKit仅使用缓存切片?我们考虑过以编程方式为此选项更改APN以强制MapKit脱机。是否可以通过编程方式更改APN?
谢谢!
答案 0 :(得分:4)
iPhone SDK应用程序无法访问网络适配器设置,我在MapKit API中一无所知,可以控制其Internet使用情况。在这种情况下,您最好的选择可能是提示用户启用飞行模式或关闭数据漫游的警报。
答案 1 :(得分:2)
使用openstreetmap 认为它的商业方面Cloud-made允许离线地图
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崩溃
答案 2 :(得分:0)
有一些方法。一种是使用自己的tile overlay并在URLForTilePath:或loadTileAtPath中实现缓存算法:result:
它适用于开放域和一些私有域。不缓存标准Apple Maps。
另一种能够缓存所有内容的方法是子类NSURLProtocol。有一些教程,你可能会检测到什么时候是地图图像并采取相应的行动
答案 3 :(得分:-1)