显示地图 最后更新时间: 2021年03月10日
第一步,准备工作
1) 如果您还没有配置 3D 地图 SDK 到工程中,可以先参考手动部署配置工程。
2) 如果您需要 SDK 使用 HTTPS 协议发起网络请求可以参考应用HTTPS解决方案章节的内容。
第二步,配置头文件
在您的 ViewController.h 中添加以下两个头文件,注意Swift需要在桥接文件中引入头文件:
#import <MAMapKit/MAMapKit.h>
#import <AMapFoundationKit/AMapFoundationKit.h>
第三步,实现MAMapWebViewProcotol协议类
//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 的代码。
- (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)
}
编译,运行工程,效果如下图所示: