美文网首页
地图的使用

地图的使用

作者: CHADHEA | 来源:发表于2017-03-10 11:21 被阅读0次

    //.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

    谢谢阅读!

    相关文章

      网友评论

          本文标题:地图的使用

          本文链接:https://www.haomeiwen.com/subject/kzungttx.html