使用Mapkit框架加载openstreetmap



我想开发跟踪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

最新更新