170 lines
5.8 KiB
Dart
170 lines
5.8 KiB
Dart
//
|
||
// FATExt_invokeMapTask.m
|
||
// FBRetainCycleDetector
|
||
//
|
||
// Created by 王兆耀 on 2021/9/2.
|
||
//
|
||
|
||
#import "FATExt_invokeMapTask.h"
|
||
#import "FATMapView.h"
|
||
#import "FATExtMapManager.h"
|
||
#import "FATExtUtil.h"
|
||
|
||
@implementation FATExt_invokeMapTask
|
||
|
||
- (void)setupApiWithSuccess:(void (^)(NSDictionary<NSString *, id> *successResult))success
|
||
failure:(void (^)(NSDictionary *failResult))failure
|
||
cancel:(void (^)(NSDictionary *cancelResult))cancel {
|
||
UIView<FATMapViewDelegate> *map = nil;
|
||
if (self.context && [self.context respondsToSelector:@selector(getChildViewById:)]) {
|
||
UIView *targetView = [self.context getChildViewById:self.param[@"mapId"]];
|
||
if (targetView && [targetView conformsToProtocol:@protocol(FATMapViewDelegate)]) {
|
||
map = (UIView<FATMapViewDelegate> *)targetView;
|
||
}
|
||
}
|
||
if (!map) {
|
||
if (failure) {
|
||
failure(@{@"errMsg" : @"map view not exist"});
|
||
}
|
||
return;
|
||
}
|
||
if ([self.eventName isEqualToString:@"getCenterLocation"]) {
|
||
NSMutableDictionary *dic = [[NSMutableDictionary alloc] initWithDictionary:[map fat_getCenter]];
|
||
if (success) {
|
||
success(dic);
|
||
}
|
||
} else if ([self.eventName isEqualToString:@"getRegion"]) {
|
||
NSDictionary *dic = [map fat_mapgetRegion];
|
||
if (success) {
|
||
success(dic);
|
||
}
|
||
} else if ([self.eventName isEqualToString:@"getScale"]) {
|
||
double scale = [map fat_getScale];
|
||
if (success) {
|
||
success(@{@"scale" : [NSNumber numberWithDouble:scale]});
|
||
}
|
||
} else if ([self.eventName isEqualToString:@"includePoints"]) {
|
||
[map fat_includePoints:self.data];
|
||
if (success) {
|
||
success(@{});
|
||
}
|
||
} else if ([self.eventName isEqualToString:@"moveToLocation"]) {
|
||
NSString *status = [map fat_moveToLocation:self.data];
|
||
if ([status isEqualToString:@"fail"]) {
|
||
if (failure) {
|
||
failure(@{@"errMsg" : @"not show user location"});
|
||
}
|
||
} else {
|
||
if (success) {
|
||
success(@{});
|
||
}
|
||
}
|
||
} else if ([self.eventName isEqualToString:@"fromScreenLocation"]) {
|
||
NSDictionary *dic = [map fat_fromScreenLocation];
|
||
if (success) {
|
||
success(dic);
|
||
}
|
||
} else if ([self.eventName isEqualToString:@"toScreenLocation"]) {
|
||
// 暂时有bug,微信端有问题。
|
||
CGPoint point = [map fat_toScreenLocation:self.data];
|
||
if (success) {
|
||
success(@{@"x" : @(point.x),
|
||
@"y" : @(point.y)});
|
||
};
|
||
} else if ([self.eventName isEqualToString:@"openMapApp"]) {
|
||
[map fat_openMapApp:self.data];
|
||
if (success) {
|
||
success(@{});
|
||
};
|
||
} else if ([self.eventName isEqualToString:@"addMarkers"]) {
|
||
[map fat_addMarkers:self.data];
|
||
if (success) {
|
||
success(@{});
|
||
};
|
||
} else if ([self.eventName isEqualToString:@"removeMarkers"]) {
|
||
[map fat_removeMarkers:self.data];
|
||
if (success) {
|
||
success(@{});
|
||
};
|
||
} else if ([self.eventName isEqualToString:@"translateMarker"]) {
|
||
BOOL isExit = [map fat_translateMarker:self.data];
|
||
if (isExit) {
|
||
if (success) {
|
||
success(@{});
|
||
};
|
||
} else {
|
||
if (failure) {
|
||
failure(@{@"errMsg" : @"error markerid"});
|
||
}
|
||
}
|
||
} else if ([self.eventName isEqualToString:@"moveAlong"]) {
|
||
BOOL isExit = [map fat_moveAlong:self.data];
|
||
if (isExit) {
|
||
if (success) {
|
||
success(@{});
|
||
};
|
||
} else {
|
||
NSArray *pathArray = [[NSArray alloc] initWithArray:self.data[@"path"]];
|
||
if (pathArray.count == 0 || ![pathArray isKindOfClass:[NSArray class]]) {
|
||
if (failure) {
|
||
failure(@{@"errMsg" : @"parameter error: parameter.duration should be Number instead of Undefined;"});
|
||
}
|
||
} else {
|
||
if (failure) {
|
||
failure(@{@"errMsg" : @"error markerid"});
|
||
}
|
||
}
|
||
}
|
||
} else if ([self.eventName isEqualToString:@"setCenterOffset"]) {
|
||
if ([map respondsToSelector:@selector(mapSetCenterOffset:)]) {
|
||
[map mapSetCenterOffset:self.data];
|
||
if (success) {
|
||
success(@{});
|
||
};
|
||
} else {
|
||
if (failure) {
|
||
failure(@{@"errMsg" : @"not support"});
|
||
};
|
||
}
|
||
} else if ([self.eventName isEqualToString:@"getRotate"]) {
|
||
if ([map respondsToSelector:@selector(fat_getRotate)]) {
|
||
NSDictionary *dic = [map fat_getRotate];
|
||
if (success) {
|
||
success(dic);
|
||
}
|
||
} else {
|
||
if (failure) {
|
||
failure(@{@"errMsg" : @"not support"});
|
||
};
|
||
}
|
||
} else if ([self.eventName isEqualToString:@"getSkew"]) {
|
||
if ([map respondsToSelector:@selector(fat_getskew)]) {
|
||
NSDictionary *dic = [map fat_getskew];
|
||
if (success) {
|
||
success(dic);
|
||
}
|
||
} else {
|
||
if (failure) {
|
||
failure(@{@"errMsg" : @"not support"});
|
||
};
|
||
}
|
||
} else if ([self.eventName isEqualToString:@"initMarkerCluster"]) {
|
||
if (failure) {
|
||
failure(@{@"errMsg" : @"not support"});
|
||
};
|
||
} else if ([self.eventName isEqualToString:@"setLocMarkerIcon"]) {
|
||
if ([map respondsToSelector:@selector(fat_setLocMarkerIcon:)]) {
|
||
[map fat_setLocMarkerIcon:self.data];
|
||
if (success) {
|
||
success(@{});
|
||
}
|
||
} else {
|
||
if (failure) {
|
||
failure(@{@"errMsg" : @"not support"});
|
||
};
|
||
}
|
||
}
|
||
}
|
||
|
||
@end
|