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.

40 lines
1.4 KiB
Objective-C

//
// BMFMapStatusModel.m
// flutter_bmfmap
//
// Created by zbj on 2020/2/20.
//
#import "BMFMapStatusModel.h"
#import "BMFMapModels.h"
#import <BaiduMapAPI_Map/BMKMapStatus.h>
typedef struct CG_BOXABLE BMFlutterMapRect BMFlutterMapRect;
@implementation BMFMapStatusModel
+ (BMFMapStatusModel *)fromMapStatus:(BMKMapStatus *)mapStatus{
BMFMapStatusModel *model = [BMFMapStatusModel new];
model.fLevel = mapStatus.fLevel;
model.fRotation = mapStatus.fRotation;
model.fOverlooking = mapStatus.fOverlooking;
model.targetScreenPt = [BMFMapPoint fromCGPoint:mapStatus.targetScreenPt];
model.targetGeoPt = [BMFCoordinate fromCLLocationCoordinate2D:mapStatus.targetGeoPt];
BMFMapRect *rect = [BMFMapRect fromBMKMapRect:mapStatus.visibleMapRect];
model.visibleMapBounds = [rect toBMFCoordinateBounds];
return model;
}
- (BMKMapStatus *)toMapStatus {
BMKMapStatus *status = [BMKMapStatus new];
status.fLevel = self.fLevel;
status.fRotation = self.fRotation;
status.fOverlooking = self.fOverlooking;
status.targetGeoPt = [self.targetGeoPt toCLLocationCoordinate2D];
status.targetScreenPt = [self.targetScreenPt toCGPoint];
// 这里需要KVC赋值
BMKMapRect mapRect = [self.visibleMapBounds toBMKMapRect];
NSValue *value = [NSValue valueWithBytes:&mapRect objCType:@encode(BMKMapRect)];
[status setValue:value forKey:@"_visibleMapRect"];
return status;
}
@end