【问题标题】:load openstreetmap by using Mapkit framework使用 Mapkit 框架加载 openstreetmap
【发布时间】:2016-10-25 10:27:22
【问题描述】:
【问题讨论】:
标签:
ios
objective-c
mapkit
openstreetmap
【解决方案1】:
据我了解,您需要的是;一个图块中的整个世界地图。
这是我过去尝试过的代码,可能会有所帮助。
下载,TileOverlay.h,TileOverlay.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