gpt4 book ai didi

ios - 使用Mapkit框架加载openstreetmap

转载 作者:行者123 更新时间:2023-11-29 00:37:44 25 4
gpt4 key购买 nike

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

openstreetMap 图 block 加载的屏幕截图

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

----- 请给我建议,任何帮助都将不胜感激。谢谢...

最佳答案

据我了解,您需要的是;整个世界地图在一个图 block 中。

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

下载, 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

注意:您将获得的文件具有禁用 ARC 编写的代码。删除它们很容易,只需删除所有保留、释放和释放即可

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

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com