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.
87 lines
2.4 KiB
Objective-C
87 lines
2.4 KiB
Objective-C
//
|
|
// BMFProjectionHandles.m
|
|
// flutter_bmfmap
|
|
//
|
|
// Created by zhangbaojin on 2020/4/1.
|
|
//
|
|
|
|
#import "BMFProjectionHandles.h"
|
|
#import "BMFProjectionConst.h"
|
|
#import "BMFMapView.h"
|
|
#import "BMFMapModels.h"
|
|
|
|
@interface BMFProjectionHandles ()
|
|
{
|
|
NSDictionary *_handles;
|
|
}
|
|
@end
|
|
|
|
@implementation BMFProjectionHandles
|
|
static BMFProjectionHandles *_instance = nil;
|
|
+ (instancetype)defalutCenter{
|
|
if (!_instance) {
|
|
static dispatch_once_t onceToken;
|
|
dispatch_once(&onceToken, ^{
|
|
_instance = [[BMFProjectionHandles alloc] init];
|
|
});
|
|
}
|
|
return _instance;
|
|
}
|
|
|
|
- (NSDictionary<NSString *, NSString *> *)projectionHandles{
|
|
if (!_handles) {
|
|
_handles = @{
|
|
kBMFCoordinateFromScreenPointMethod: NSStringFromClass([BMFCoordinateFromBMFPoint class]),
|
|
kBMFScreenPointFromCoordinateMethod: NSStringFromClass([BMFPointFromBMFCoordinate class]),
|
|
};
|
|
}
|
|
return _handles;
|
|
}
|
|
@end
|
|
|
|
#pragma mark - convert
|
|
@implementation BMFCoordinateFromBMFPoint
|
|
|
|
@synthesize _mapView;
|
|
|
|
- (nonnull NSObject<BMFMapViewHandler> *)initWith:(nonnull BMFMapView *)mapView {
|
|
_mapView = mapView;
|
|
return self;
|
|
}
|
|
|
|
- (void)handleMethodCall:(nonnull FlutterMethodCall *)call result:(nonnull FlutterResult)result {
|
|
if (!call.arguments || call.arguments[@"point"]) {
|
|
result([NSNull null]);
|
|
return;
|
|
}
|
|
BMFMapPoint *point = [BMFMapPoint bmf_modelWith:[call.arguments safeObjectForKey:@"point"]];
|
|
CLLocationCoordinate2D coord = [_mapView convertPoint:[point toCGPoint] toCoordinateFromView:_mapView];
|
|
BMFCoordinate *coordinate = [BMFCoordinate fromCLLocationCoordinate2D:coord];
|
|
result(@{@"coordinate" : [coordinate bmf_toDictionary]});
|
|
}
|
|
|
|
@end
|
|
|
|
|
|
@implementation BMFPointFromBMFCoordinate
|
|
|
|
@synthesize _mapView;
|
|
|
|
- (nonnull NSObject<BMFMapViewHandler> *)initWith:(nonnull BMFMapView *)mapView {
|
|
_mapView = mapView;
|
|
return self;
|
|
}
|
|
|
|
- (void)handleMethodCall:(nonnull FlutterMethodCall *)call result:(nonnull FlutterResult)result {
|
|
if (!call.arguments || call.arguments[@"coordinate"]) {
|
|
result([NSNull null]);
|
|
return;
|
|
}
|
|
BMFCoordinate *coord = [BMFCoordinate bmf_modelWith:[call.arguments safeObjectForKey:@"coordinate"]];
|
|
CGPoint p = [_mapView convertCoordinate:[coord toCLLocationCoordinate2D] toPointToView:_mapView];
|
|
BMFMapPoint *point = [BMFMapPoint fromCGPoint:p];
|
|
result(@{@"point" : [point bmf_toDictionary]});
|
|
}
|
|
|
|
@end
|