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.
275 lines
7.9 KiB
Objective-C
275 lines
7.9 KiB
Objective-C
//
|
|
// BMFOfflineMapHandles.m
|
|
// flutter_bmfmap
|
|
//
|
|
// Created by zhangbaojin on 2020/3/25.
|
|
//
|
|
|
|
#import "BMFOfflineMapHandles.h"
|
|
#import "BMFOfflineMapMethodConst.h"
|
|
#import "BMFOfflineMap.h"
|
|
#import "BMFOLSearchRecordModel.h"
|
|
#import "BMFMapModels.h"
|
|
|
|
@interface BMFOfflineMapHandles ()
|
|
{
|
|
NSDictionary *_handles;
|
|
}
|
|
@end
|
|
|
|
static BMFOfflineMapHandles *_instance = nil;
|
|
@implementation BMFOfflineMapHandles
|
|
/// BMFOfflineMapHandler管理中心
|
|
+ (instancetype)defalutCenter{
|
|
if (!_instance) {
|
|
static dispatch_once_t onceToken;
|
|
dispatch_once(&onceToken, ^{
|
|
_instance = [[BMFOfflineMapHandles alloc] init];
|
|
});
|
|
}
|
|
return _instance;
|
|
}
|
|
|
|
- (NSDictionary<NSString *, NSString *> *)offlineMapHandles{
|
|
if (!_handles) {
|
|
_handles = @{
|
|
kBMFStartOfflineMapMethod: NSStringFromClass([BMFStartOfflineMap class]),
|
|
kBMFUpdateOfflineMapMethod: NSStringFromClass([BMFUpdateOfflineMap class]),
|
|
kBMFPauseOfflineMapMethod: NSStringFromClass([BMFPauseOfflineMap class]),
|
|
kBMFRemoveOfflineMapMethod: NSStringFromClass([BMFRemoveOfflineMap class]),
|
|
kBMFDestroyOfflinMapMethod: NSStringFromClass([BMFDestroyOfflinMap class]),
|
|
kBMFGetHotCityListMapMethod: NSStringFromClass([BMFGetHotCityListMap class]),
|
|
kBMFGetOfflineCityListMapMethod: NSStringFromClass([BMFGetOfflineCityListMap class]),
|
|
kBMFSearchCityMapMethod: NSStringFromClass([BMFSearchCityMap class]),
|
|
kBMFGetAllUpdateInfoMapMethod: NSStringFromClass([BMFGetAllUpdateInfoMap class]),
|
|
kBMFGetUpdateInfoMapMethod: NSStringFromClass([BMFGetUpdateInfoMap class]),
|
|
};
|
|
}
|
|
return _handles;
|
|
}
|
|
@end
|
|
|
|
|
|
#pragma mark - offlineMapHandler
|
|
@implementation BMFStartOfflineMap
|
|
|
|
@synthesize _offlineMap;
|
|
|
|
- (nonnull NSObject<BMFOfflineMapHandle> *)initWith:(nonnull BMFOfflineMap *)offlineMap {
|
|
_offlineMap = offlineMap;
|
|
return self;
|
|
}
|
|
|
|
- (void)handleMethodCall:(nonnull FlutterMethodCall *)call result:(nonnull FlutterResult)result {
|
|
if (!call.arguments || !call.arguments[@"cityID"]) {
|
|
result(@NO);
|
|
}
|
|
BOOL success = [_offlineMap start:[[call.arguments safeValueForKey:@"cityID"] intValue]];
|
|
result(@(success));
|
|
}
|
|
|
|
@end
|
|
|
|
@implementation BMFUpdateOfflineMap
|
|
|
|
@synthesize _offlineMap;
|
|
|
|
- (nonnull NSObject<BMFOfflineMapHandle> *)initWith:(nonnull BMFOfflineMap *)offlineMap {
|
|
_offlineMap = offlineMap;
|
|
return self;
|
|
}
|
|
|
|
- (void)handleMethodCall:(nonnull FlutterMethodCall *)call result:(nonnull FlutterResult)result {
|
|
if (!call.arguments || !call.arguments[@"cityID"]) {
|
|
result(@NO);
|
|
}
|
|
BOOL success = [_offlineMap update:[[call.arguments safeValueForKey:@"cityID"] intValue]];
|
|
result(@(success));
|
|
}
|
|
|
|
@end
|
|
|
|
@implementation BMFPauseOfflineMap
|
|
|
|
@synthesize _offlineMap;
|
|
|
|
- (nonnull NSObject<BMFOfflineMapHandle> *)initWith:(nonnull BMFOfflineMap *)offlineMap {
|
|
_offlineMap = offlineMap;
|
|
return self;
|
|
}
|
|
|
|
- (void)handleMethodCall:(nonnull FlutterMethodCall *)call result:(nonnull FlutterResult)result {
|
|
if (!call.arguments || !call.arguments[@"cityID"]) {
|
|
result(@NO);
|
|
}
|
|
BOOL success = [_offlineMap pause:[[call.arguments safeValueForKey:@"cityID"] intValue]];
|
|
result(@(success));
|
|
}
|
|
|
|
@end
|
|
|
|
@implementation BMFRemoveOfflineMap
|
|
|
|
@synthesize _offlineMap;
|
|
|
|
- (nonnull NSObject<BMFOfflineMapHandle> *)initWith:(nonnull BMFOfflineMap *)offlineMap {
|
|
_offlineMap = offlineMap;
|
|
return self;
|
|
}
|
|
|
|
- (void)handleMethodCall:(nonnull FlutterMethodCall *)call result:(nonnull FlutterResult)result {
|
|
if (!call.arguments || !call.arguments[@"cityID"]) {
|
|
result(@NO);
|
|
}
|
|
BOOL success = [_offlineMap remove:[[call.arguments safeValueForKey:@"cityID"] intValue]];
|
|
result(@(success));
|
|
}
|
|
|
|
@end
|
|
|
|
@implementation BMFDestroyOfflinMap
|
|
|
|
@synthesize _offlineMap;
|
|
|
|
- (nonnull NSObject<BMFOfflineMapHandle> *)initWith:(nonnull BMFOfflineMap *)offlineMap {
|
|
_offlineMap = offlineMap;
|
|
return self;
|
|
}
|
|
|
|
- (void)handleMethodCall:(nonnull FlutterMethodCall *)call result:(nonnull FlutterResult)result {
|
|
// TODO:ios没有销毁接口
|
|
result(@(YES));
|
|
}
|
|
|
|
@end
|
|
|
|
@implementation BMFGetHotCityListMap
|
|
|
|
@synthesize _offlineMap;
|
|
|
|
- (nonnull NSObject<BMFOfflineMapHandle> *)initWith:(nonnull BMFOfflineMap *)offlineMap {
|
|
_offlineMap = offlineMap;
|
|
return self;
|
|
}
|
|
|
|
- (void)handleMethodCall:(nonnull FlutterMethodCall *)call result:(nonnull FlutterResult)result {
|
|
NSArray<BMFOLSearchRecordModel *> *hotCity = [BMFOLSearchRecordModel fromDataArray:[_offlineMap getHotCityList]];
|
|
NSMutableArray *dicModels = [NSMutableArray array];
|
|
for (BMFOLSearchRecordModel *model in hotCity) {
|
|
|
|
[dicModels addObject: [model bmf_toDictionary]];
|
|
}
|
|
|
|
if (dicModels.count > 0) {
|
|
result(@{@"searchCityRecord" : dicModels});
|
|
} else {
|
|
result([NSNull null]);
|
|
}
|
|
|
|
}
|
|
|
|
@end
|
|
|
|
@implementation BMFGetOfflineCityListMap
|
|
|
|
@synthesize _offlineMap;
|
|
|
|
- (nonnull NSObject<BMFOfflineMapHandle> *)initWith:(nonnull BMFOfflineMap *)offlineMap {
|
|
_offlineMap = offlineMap;
|
|
return self;
|
|
}
|
|
|
|
- (void)handleMethodCall:(nonnull FlutterMethodCall *)call result:(nonnull FlutterResult)result {
|
|
NSArray<BMFOLSearchRecordModel *> *offlineCitys = [BMFOLSearchRecordModel fromDataArray:[_offlineMap getOfflineCityList]];
|
|
NSMutableArray *dicModels = [NSMutableArray array];
|
|
for (BMFOLSearchRecordModel *model in offlineCitys) {
|
|
|
|
[dicModels addObject: [model bmf_toDictionary]];
|
|
}
|
|
|
|
if (dicModels.count > 0) {
|
|
result(@{@"searchCityRecord" : dicModels});
|
|
} else {
|
|
result([NSNull null]);
|
|
}
|
|
}
|
|
|
|
@end
|
|
|
|
@implementation BMFSearchCityMap
|
|
|
|
@synthesize _offlineMap;
|
|
|
|
- (nonnull NSObject<BMFOfflineMapHandle> *)initWith:(nonnull BMFOfflineMap *)offlineMap {
|
|
_offlineMap = offlineMap;
|
|
return self;
|
|
}
|
|
|
|
- (void)handleMethodCall:(nonnull FlutterMethodCall *)call result:(nonnull FlutterResult)result {
|
|
if (!call.arguments || !call.arguments[@"cityName"]) {
|
|
result([NSNull null]);
|
|
}
|
|
NSArray<BMFOLSearchRecordModel *> *citys = [BMFOLSearchRecordModel fromDataArray:[_offlineMap searchCity:[call.arguments safeValueForKey:@"cityName"]]];
|
|
NSMutableArray *dicModels = [NSMutableArray array];
|
|
for (BMFOLSearchRecordModel *model in citys) {
|
|
[dicModels addObject: [model bmf_toDictionary]];
|
|
}
|
|
|
|
if (dicModels.count > 0) {
|
|
result(@{@"searchCityRecord" : dicModels});
|
|
} else {
|
|
result([NSNull null]);
|
|
}
|
|
}
|
|
|
|
@end
|
|
|
|
@implementation BMFGetAllUpdateInfoMap
|
|
|
|
@synthesize _offlineMap;
|
|
|
|
- (nonnull NSObject<BMFOfflineMapHandle> *)initWith:(nonnull BMFOfflineMap *)offlineMap {
|
|
_offlineMap = offlineMap;
|
|
return self;
|
|
}
|
|
|
|
- (void)handleMethodCall:(nonnull FlutterMethodCall *)call result:(nonnull FlutterResult)result {
|
|
NSArray<BMFOLUpdateElementModel *> *models = [BMFOLUpdateElementModel fromDataArray:[_offlineMap getAllUpdateInfo]];
|
|
NSMutableArray *dicModels = [NSMutableArray array];
|
|
for (BMFOLUpdateElementModel *model in models) {
|
|
[dicModels addObject:[model bmf_toDictionary]];
|
|
}
|
|
|
|
if (dicModels.count > 0) {
|
|
result(@{@"updateElements" : dicModels});
|
|
} else {
|
|
result([NSNull null]);
|
|
}
|
|
}
|
|
|
|
@end
|
|
|
|
@implementation BMFGetUpdateInfoMap
|
|
|
|
@synthesize _offlineMap;
|
|
|
|
- (nonnull NSObject<BMFOfflineMapHandle> *)initWith:(nonnull BMFOfflineMap *)offlineMap {
|
|
_offlineMap = offlineMap;
|
|
return self;
|
|
}
|
|
|
|
- (void)handleMethodCall:(nonnull FlutterMethodCall *)call result:(nonnull FlutterResult)result {
|
|
if (!call.arguments || !call.arguments[@"cityID"]) {
|
|
result([NSNull null]);
|
|
}
|
|
BMKOLUpdateElement *element = [_offlineMap getUpdateInfo:[[call.arguments safeValueForKey:@"cityID"] intValue]];
|
|
if (element) {
|
|
BMFOLUpdateElementModel *model = [BMFOLUpdateElementModel fromBMKOLUpdateElement:element];
|
|
result([model bmf_toDictionary]);
|
|
} else {
|
|
result([NSNull null]);
|
|
}
|
|
}
|
|
|
|
@end
|