我想开发跟踪iOS应用程序,但是-我想用MapKit框架加载openstreetmap,因为苹果地图不提供详细的准确性。-有很多第三方库/框架,比如Mapbox, whirlyglobemap等,但我不想使用它们。因为都有商业层面的定价计划。我还发现,谷歌地图也需要在商业层面进行定价。-所以我寻找了很多方法& &;我在下面的链接中找到了一个http://www.glimsoft.com/01/31/how-to-use-openstreetmap-on-ios-7-in-7-lines-of-code/但是它显示了多个磁贴-对于上面的代码,我使用url即-"http://tile.openstreetmap.org/10/547/380.png"[这是样图]。结果如下
openstreetMap贴图加载截图
- 那么如何加载世界地图贴图?有可能得到x y z坐标吗??
- 还是我应该使用离线的openstreetMap ?我不知道它是怎么工作的。
- 是否可以通过使用Mapkit框架加载OpenstreetMap ??或者我找错路了。 或者我应该使用任何付费版本的第三方库的映射功能??
-----请给我建议,任何帮助将是非常感激的。谢谢…
根据我的理解,你需要的是;整个世界地图在一个瓷砖。
这是我以前试过的一个代码,也许它能帮上忙。
下载,TileOverlay.h, TileOverlay.h。m, TileOverlayView.h, TileOverlayView.m《Let's Do It》
找到你管理MapView对象的视图控制器。我假设你的IBOutlet MKMapView叫做mapview。
ViewController.h
@interface ViewController : UIViewController <MKMapViewDelegate>
@end
ViewController.m
#import "ViewController.h"
#import "TileOverlay.h"
#import "TileOverlayView.h"
@interface ViewController ()
@property (strong, nonatomic) IBOutlet MKMapView *mapview;
@property (nonatomic, retain) TileOverlay *overlay;
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
[super viewDidLoad];
// your existing viewDidLoad code is here
self.overlay = [[TileOverlay alloc] initOverlay];
[_mapview addOverlay:self.overlay];
MKMapRect visibleRect = [_mapview mapRectThatFits:self.overlay.boundingMapRect];
visibleRect.size.width /= 2;
visibleRect.size.height /= 2;
visibleRect.origin.x += visibleRect.size.width / 2;
visibleRect.origin.y += visibleRect.size.height / 2;
_mapview.visibleMapRect = visibleRect;
}
- (MKOverlayView *)mapView:(MKMapView *)mapView viewForOverlay:(id <MKOverlay>)ovl
{
TileOverlayView *view = [[TileOverlayView alloc] initWithOverlay:ovl];
view.tileAlpha = 1.0; // e.g. 0.6 alpha for semi-transparent overlay
return view;
}
- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
@end
Note : The files which you will get have code written with ARC disabled.It is easy to remove them just delete all the retain, release and dealloc