地图的使用

//.h#import//地图大头针

@class MZAnnotation;

@interface MZMapView : MKMapView

//地图

+ (MKMapView *)addSubview:(UIView *)view;

+ (MKMapView *)addSubview:(UIView *)view frame:(CGRect)frame;

+ (MKMapView *)addSubview:(UIView *)view mapType:(MKMapType)mapType;

+ (MKMapView *)addSubview:(UIView *)view mapType:(MKMapType)mapType frame:(CGRect)frame;

//搜索

+ (void)searchFor:(NSString *)search result:(void(^)(NSArray*placemarks,NSError *error))result;

//定位

+ (void)positionWith:(MKMapView *)mapView coordinate:(CLLocationCoordinate2D)coordinate span:(MKCoordinateSpan)span;

+ (void)positionWith:(MKMapView *)mapView coordinate:(CLLocationCoordinate2D)coordinate latitudeDelta:(CGFloat)latitudeDelta longitudeDelta:(CGFloat)longitudeDelta;

+ (void)positionWith:(MKMapView *)mapView mark:(CLPlacemark *)mark span:(MKCoordinateSpan)span;

+ (void)positionWith:(MKMapView *)mapView mark:(CLPlacemark *)mark latitudeDelta:(CGFloat)latitudeDelta longitudeDelta:(CGFloat)longitudeDelta;

+ (void)positionWith:(MKMapView *)mapView markArray:(NSArray*)markArray span:(MKCoordinateSpan)span;

+ (void)positionWith:(MKMapView *)mapView markArray:(NSArray*)markArray latitudeDelta:(CGFloat)latitudeDelta longitudeDelta:(CGFloat)longitudeDelta;

//添加大头针

+ (void)addAnnotationWith:(MKMapView *)mapView annotation:(MZAnnotation *)annotation;

+ (void)addAnnotationWith:(MKMapView *)mapView title:(NSString *)title subTitle:(NSString *)subTitle coordination:(CLLocationCoordinate2D)coordinate;

+ (void)addAnnotationWith:(MKMapView *)mapView annotationForMark:(CLPlacemark *)mark;

@end

@interface MZAnnotation : NSObject

@property (nonatomic,copy)NSString    *title;

@property (nonatomic,copy)NSString    *subTitle;

@property (nonatomic,assign)CLLocationCoordinate2D    coordinate;

@end

//.m

#import "MZMapView.h"

@implementation MZMapView

+ (MKMapView *)addSubview:(UIView *)view {

return [self addSubview:view mapType:MKMapTypeStandard frame:CGRectZero];

}

+ (MKMapView *)addSubview:(UIView *)view frame:(CGRect)frame {

return [self addSubview:view mapType:MKMapTypeStandard frame:frame];

}

+ (MKMapView *)addSubview:(UIView *)view mapType:(MKMapType)mapType {

return [self addSubview:view mapType:mapType frame:CGRectZero];

}

+ (MKMapView *)addSubview:(UIView *)view mapType:(MKMapType)mapType frame:(CGRect)frame {

MKMapView  *mzMapView = [[MKMapView alloc]initWithFrame:frame];

mzMapView.mapType = mapType;

return mzMapView;

}

//搜索

+ (void)searchFor:(NSString *)search result:(void(^)(NSArray*placemarks,NSError *error))result {        CLGeocoder      *geo=[[CLGeocoder alloc]init];    [geo geocodeAddressString:search completionHandler:^(NSArray* _Nullable placemarks, NSError * _Nullable error) {

if (result) {

result(placemarks,error);

}

}];

}

//定位

+ (void)positionWith:(MKMapView *)mapView coordinate:(CLLocationCoordinate2D)coordinate span:(MKCoordinateSpan)span {

MKCoordinateRegion      region=MKCoordinateRegionMake(coordinate, span);

[mapView setRegion:region animated:YES];

}

+ (void)positionWith:(MKMapView *)mapView coordinate:(CLLocationCoordinate2D)coordinate latitudeDelta:(CGFloat)latitudeDelta longitudeDelta:(CGFloat)longitudeDelta {

MKCoordinateSpan    span=MKCoordinateSpanMake(latitudeDelta, longitudeDelta);

MKCoordinateRegion      region=MKCoordinateRegionMake(coordinate, span);

[mapView setRegion:region animated:YES];

}

+ (void)positionWith:(MKMapView *)mapView mark:(CLPlacemark *)mark span:(MKCoordinateSpan)span {

[self positionWith:mapView coordinate:mark.location.coordinate span:span];

}

+ (void)positionWith:(MKMapView *)mapView mark:(CLPlacemark *)mark latitudeDelta:(CGFloat)latitudeDelta longitudeDelta:(CGFloat)longitudeDelta {

[self positionWith:mapView coordinate:mark.location.coordinate latitudeDelta:latitudeDelta longitudeDelta:longitudeDelta];

}

+ (void)positionWith:(MKMapView *)mapView markArray:(NSArray*)markArray span:(MKCoordinateSpan)span {

for (CLPlacemark *mark in markArray) {

[self positionWith:mapView coordinate:mark.location.coordinate span:span];

}

}

+ (void)positionWith:(MKMapView *)mapView markArray:(NSArray*)markArray latitudeDelta:(CGFloat)latitudeDelta longitudeDelta:(CGFloat)longitudeDelta {

for (CLPlacemark *mark in markArray) {

[self positionWith:mapView coordinate:mark.location.coordinate latitudeDelta:latitudeDelta longitudeDelta:longitudeDelta];

}

}

//添加大头针

+ (void)addAnnotationWith:(MKMapView *)mapView annotation:(MZAnnotation *)annotation {

[mapView addAnnotation:annotation];

}

+ (void)addAnnotationWith:(MKMapView *)mapView title:(NSString *)title subTitle:(NSString *)subTitle coordination:(CLLocationCoordinate2D)coordinate {

MZAnnotation  *annotation = [[MZAnnotation alloc]init];

annotation.title = title;

annotation.subTitle = subTitle;

annotation.coordinate = coordinate;

[mapView addAnnotation:annotation];

}

+ (void)addAnnotationWith:(MKMapView *)mapView annotationForMark:(CLPlacemark *)mark {

MZAnnotation    *annotation=[[MZAnnotation alloc]init];

annotation.title=mark.name;

annotation.coordinate=mark.location.coordinate;

[mapView addAnnotation:annotation];

}

/*

// Only override drawRect: if you perform custom drawing.

// An empty implementation adversely affects performance during animation.

- (void)drawRect:(CGRect)rect {

// Drawing code

}

*/

@end

@implementation MZAnnotation

@end

谢谢阅读!

你可能感兴趣的:(地图的使用)