You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
66 lines
2.2 KiB
Objective-C
66 lines
2.2 KiB
Objective-C
//
|
|
// BMFOfflineMapManager.m
|
|
// flutter_bmfmap
|
|
//
|
|
// Created by zhangbaojin on 2020/3/25.
|
|
//
|
|
|
|
#import "BMFOfflineMapManager.h"
|
|
#import "BMFOfflineMapMethodConst.h"
|
|
#import "BMFOfflineMap.h"
|
|
#import "BMFOfflineMapHandles.h"
|
|
|
|
@interface BMFOfflineMapManager ()<BMKOfflineMapDelegate>
|
|
|
|
/// 离线地图类的实例
|
|
@property (nonatomic, strong) BMFOfflineMap *offlineMap;
|
|
|
|
@end
|
|
@implementation BMFOfflineMapManager
|
|
|
|
+ (void)registerWithRegistrar:(nonnull NSObject<FlutterPluginRegistrar> *)registrar {
|
|
FlutterMethodChannel *offlineChannel = [FlutterMethodChannel methodChannelWithName:kBMFOfflineMapChannelName binaryMessenger:[registrar messenger]];
|
|
BMFOfflineMapManager *manager = [[BMFOfflineMapManager alloc] init];
|
|
manager.channel = offlineChannel;
|
|
[registrar addMethodCallDelegate:manager channel:offlineChannel];
|
|
}
|
|
|
|
// 通信回调
|
|
- (void)handleMethodCall:(FlutterMethodCall*)call result:(FlutterResult)result{
|
|
// NSLog(@"ios-离线地图-method = %@ \n arguments = %@", call.method, call.arguments);
|
|
if ([call.method isEqualToString:kBMFInitOfflineMapMethod]) {
|
|
[self offlineMap];
|
|
return;
|
|
}
|
|
BMFOfflineMapHandles *handleCenter = [BMFOfflineMapHandles defalutCenter];
|
|
NSArray *methods = [[handleCenter offlineMapHandles] allKeys];
|
|
|
|
if ([methods containsObject:call.method]) {
|
|
__weak __typeof__(_offlineMap) weakOfflineMap = _offlineMap;
|
|
NSObject<BMFOfflineMapHandle> *handler = [[NSClassFromString(handleCenter.offlineMapHandles[call.method]) new] initWith:weakOfflineMap];
|
|
[handler handleMethodCall:call result:result];
|
|
|
|
} else {
|
|
result(FlutterMethodNotImplemented);
|
|
}
|
|
}
|
|
- (BMFOfflineMap *)offlineMap{
|
|
if (!_offlineMap) {
|
|
_offlineMap = [[BMFOfflineMap alloc] init];
|
|
_offlineMap.delegate = self;
|
|
}
|
|
return _offlineMap;
|
|
}
|
|
#pragma mark - BMKOfflineMapDelegate
|
|
|
|
- (void)onGetOfflineMapState:(int)type withState:(int)state {
|
|
// NSLog(@"-ios-离线地图下载回调type = %d state = %d", type, state);
|
|
if (!_channel) {
|
|
return;
|
|
}
|
|
[_channel invokeMethod:kBMFOfflineMapCallBackMethod arguments:@{@"type": @(type),
|
|
@"state": @(state)}];
|
|
}
|
|
|
|
@end
|