我想开发跟踪iOS应用程序,但是
-我想使用MapKit框架加载openstreetmap,因为苹果地图不能提供详细的准确性。
-第三方库/框架太多,例如Mapbox,whirlyGlobeMaply等,但我不想使用它。因为所有人都有商业级别的定价计划。
另外,我发现Google Maps还要求在商业级别定价。
-因此,我搜索了很多方法,并在以下链接中找到了一种方法
http://www.glimsoft.com/01/31/how-to-use-openstreetmap-on-ios-7-in-7-lines-of-code/,但显示多个图块
-对于上述代码,我使用了网址,即-“ http://tile.openstreetmap.org/10/547/380.png
[这是示例图]。这给出了如下结果

openstreetMap磁贴加载的屏幕截图


那么如何加载世界地图图块?有可能获得x,y,z坐标吗?
还是应该使用离线openstreetMap?我不知道它是如何工作的。
使用Mapkit Framework是否可以加载OpenstreetMap?否则我正在寻找错误的方式。
还是我应该使用第三方库的任何付费版本以获取地图功能?


-----请给我建议,任何帮助都将适用。
谢谢...

最佳答案

根据我的理解,您需要的是瓷砖中的整个世界地图。

这是我过去尝试过的代码,可能会有所帮助。

下载,TileOverlay.h,TileOverlay.m,TileOverlayView.h,TileOverlayView.m
Let's Do It中的文件

查找在其中管理MapView对象的View Controller。
我假设您的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

关于ios - 使用Mapkit框架加载openstreetmap,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40237518/

10-10 08:32