在MKMapView中设置注释图标的大小-iOS

时间:2018-12-15 13:04:24

标签: ios objective-c mkmapview

我正在尝试在MKMapView上显示一些图标。我通过使用以下代码实现了这一点:

MapPoint *placeObject = [[MapPoint alloc] initWithName:place.name
                                                           address:place.address
                                                        coordinate:place.location.coordinate
                                                             image:place.customMapPinImage
                                                              icon:place.icon
                                                          bookmark:place.bookmark
                                                       contents_ID:place.contents_ID
                                             contents_lang_MAIN_ID:place.contents_lang_MAIN_ID
                                               contents_lang_ID_ML:place.contents_lang_ID_ML];


            [mapView addAnnotation:placeObject];

问题在于,在不更改代码中任何内容的情况下,图标的大小已更改,我不知道为什么。如何调整图标的大小?

1 个答案:

答案 0 :(得分:0)

您需要编写类注释

#import <Foundation/Foundation.h>
#import <MapKit/MapKit.h>

@interface Annotation : NSObject <MKAnnotation>

@property (nonatomic) CLLocationCoordinate2D coordinate;
@property (strong, nonatomic) NSString *myTitle;

+ (Annotation *)initAnnotation:(CLLocationCoordinate2D)coordinate title:(NSString *)title;

@end

实施

#import "Annotation.h"

@implementation Annotation

+ (Annotation *)initAnnotation:(CLLocationCoordinate2D)coordinate title:(NSString *)title

{
    return [[Annotation alloc] initWithAnnotation:coordinate title:title];
}

- (instancetype)initWithAnnotation:(CLLocationCoordinate2D)coordinate title:(NSString *)title
{
     self = [super init];
     self.coordinate = coordinate;
     self.myTitle = title;
     return self;
}

@end

ViewController

#import "ViewController.h"
#import <MapKit/MapKit.h>
#import "Annotation.h"

@interface ViewController ()

@property (weak, nonatomic) IBOutlet MKMapView *mapView;

@end

@implementation ViewController

- (void)viewDidLoad {
   [super viewDidLoad];

   //set coordinates

   CLLocationCoordinate2D coordinate = CLLocationCoordinate2DMake(51.50851, -0.02172);

   //add annotation

   Annotation *annotation = [Annotation initAnnotation:coordinate title:@"Annotation"];

   [self.mapView addAnnotation:annotation];
   [self.mapView showAnnotations:@[annotation] animated:YES];

   // add circle with radius

   MKCircle *circle = [MKCircle circleWithCenterCoordinate:annotation.coordinate radius:10000];
   [self.mapView addOverlay:circle];

   //add region by coordinates

   MKCoordinateRegion region;
   region.center.latitude = 51.50851;
   region.center.longitude = -0.02172;

   // level zoom

   region.span.latitudeDelta = 1;
   region.span.longitudeDelta = 1;
   region = [self.mapView regionThatFits:region];

   [self.mapView setRegion:region animated:YES];
}

不要忘记将控制器设置为地图委托,并实现圆映射方法

- (MKOverlayRenderer *)mapView:(MKMapView *)mapView rendererForOverlay:(id<MKOverlay>) overlay{
   MKCircleRenderer *circleView = [[MKCircleRenderer alloc] initWithOverlay:overlay];
   circleView.fillColor = [[UIColor greenColor] colorWithAlphaComponent:0.4];
   return circleView;
}[![enter image description here][1]][1]

出现图钉,您可以调整其大小

https://prntscr.com/lvfjwi