高德地图开发iOS 轻量版地图SDK开发指南创建地图—显示地图

高德地图开发iOS 轻量版地图SDK开发指南创建地图—显示地图

显示地图 最后更新时间: 2021年03月10日

第一步,准备工作

1) 如果您还没有配置 3D 地图 SDK 到工程中,可以先参考手动部署配置工程。

2) 如果您需要 SDK 使用 HTTPS 协议发起网络请求可以参考应用HTTPS解决方案章节的内容。

第二步,配置头文件

在您的 ViewController.h 中添加以下两个头文件,注意Swift需要在桥接文件中引入头文件: 

Objective-C

#import <MAMapKit/MAMapKit.h>
#import <AMapFoundationKit/AMapFoundationKit.h>

 第三步,实现MAMapWebViewProcotol协议类 

Objective-C

//MAMapWebViewProcotol协议实现类
@interface MAWKWebView : NSObject<MAMapWebViewProcotol>

//WKWebView对象
@property(nonatomic, strong,readonly) WKWebView *webView;
- (instancetype)initWithFrame:(CGRect)frame;

@end

@implementation MAWKWebView
//初始化
- (instancetype)initWithFrame:(CGRect)frame{
    self = [super init];
    if (self) {
        [self initWebViewWith:frame];
    }
    return self;
}
- (void)initWebViewWith:(CGRect)frame{
    WKWebViewConfiguration *configuration = [[WKWebViewConfiguration alloc]init];
    WKUserContentController *content = [[WKUserContentController alloc]init];
    configuration.userContentController = content;
    if (@available(iOS 11.0, *)) {
        //iOS11之后,注册轻量版地图SDK网络拦截监听
        NSArray<MACustomSchemeModel*> *array = [MAMap customSchemeArray];
        for (MACustomSchemeModel *model in array) {
            [configuration setURLSchemeHandler:model.urlSchemeHandler forURLScheme:model.urlScheme];
        }
    }else{
    }
    _webView = [[WKWebView alloc] initWithFrame:frame configuration:configuration];
}

- (WKWebViewConfiguration*)configuration{
    return self.webView.configuration;
}

- (nullable WKNavigation *)loadHTMLString:(NSString *)string baseURL:(nullable NSURL *)baseURL{
    return [self.webView loadHTMLString:string baseURL:baseURL];
}

- (nullable WKNavigation *)loadRequest:(NSURLRequest *)request{
    return [self.webView loadRequest:request];
}

- (void)evaluateJavaScript:(NSString *)javaScriptString completionHandler:(void (^ _Nullable)(_Nullable id, NSError * _Nullable error))completionHandler{
    return [self.webView evaluateJavaScript:javaScriptString completionHandler:completionHandler];
}
@end

第四步,实例化地图对象

在 MAMapBaseViewController.m 文件中添加实例化 MAMap 的代码。 

Objective-C
Swift

- (void)viewDidLoad
{
    [super viewDidLoad];    
    ///初始化MAMapWebViewProcotol协议实现类
    self.webViewContainer = [[MAWKWebView alloc] initWithFrame:self.view.bounds];
    ///初始化地图
    self.map = [[MAMap alloc] initWithWebView:self.webViewContainer];
    self.map.delegate = self;
    
    ///把WKWebView添加至view
    [self.view addSubview:self.webViewContainer.webView];
}
override func viewDidLoad() {
    super.viewDidLoad()
	///初始化MAMapWebViewProcotol协议实现类
    webViewContainer = MAWKWebView.init(frame: self.view.bounds)
    ///初始化地图
    map = MAMap.init(webView: webViewContainer)
    map.delegate = self;
    
    ///把WKWebView添加至view
    self.view.addSubview(webViewContainer.webView)
}

编译,运行工程,效果如下图所示: