gpt4 book ai didi

objective-c - iOS 中 MKMapView 的自定义图钉?

转载 作者:搜寻专家 更新时间:2023-10-30 19:51:00 24 4
gpt4 key购买 nike

我已经尝试了几乎所有方法来显示图像而不是我的 MKMapView 上的默认红色图钉。

网上有很多关于这个的答案,但他们都给我这样的答案:


- (MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id<MKAnnotation>)annotation
{
if([annotation isKindOfClass:[MKUserLocation class]])
return nil;

NSString *annotationIdentifier = @"CustomViewAnnotation";
MKAnnotationView* annotationView = [mapview dequeueReusableAnnotationViewWithIdentifier:annotationIdentifier];
if(!annotationView)
{
annotationView = [[MKAnnotationView alloc] initWithAnnotation:annotation
reuseIdentifier:annotationIdentifier]];
}
annotationView.image = [UIImage imageNamed:@"map_location_pin.png"];
annotationView.canShowCallout= YES;

return annotationView;
}

这对我一点帮助都没有,从表面上看它只是一种方法。

请告诉我如何使用它使方法返回带有自定义图像的注释。几乎所有其他答案都告诉我无需进一步解释即可实现该方法。

我在哪里调用它?我该如何调用它?

谢谢!

最佳答案

我自己设法解决了这个问题,这是我分 4 个步骤完成的:

第 1 步:您必须将 mapview 的委托(delegate)设置为 ViewController:

MapViewController.h

 @interface MapViewController : UIViewController <MKMapViewDelegate> {
IBOutlet MKMapView *mapView;
}
@property (nonatomic, nonatomic) IBOutlet MKMapView *mapView;

MapViewController.m

- (void)viewDidLoad
{
[super viewDidLoad];
[mapView setDelegate:self];
}

第 2 步:实现方法:

MapViewController.m

-(MKAnnotationView *) mapView:(MKMapView *)mapView viewForAnnotation:(id<MKAnnotation>)annotation {
MKPinAnnotationView *MyPin=[[MKPinAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:@"current"];
//MyPin.pinColor = MKPinAnnotationColorPurple;

UIButton *advertButton = [UIButton buttonWithType:UIButtonTypeDetailDisclosure];
[advertButton addTarget:self action:@selector(button:) forControlEvents:UIControlEventTouchUpInside];

/*MyPin.rightCalloutAccessoryView = advertButton;
MyPin.draggable = YES;

MyPin.animatesDrop=TRUE;
MyPin.canShowCallout = YES;*/
MyPin.highlighted = NO;
MyPin.image = [UIImage imageNamed:@"myCustomPinImage"];

return MyPin;
}

第 3 步:创建一个名为“Annotation”(或任何其他名称)的类

注释.h

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

@interface Annotation : NSObject <MKAnnotation> {

CLLocationCoordinate2D coordinate;
NSString *title;
NSString *subtitle;

}

@property(nonatomic, assign) CLLocationCoordinate2D coordinate;
@property(nonatomic, copy) NSString *title;
@property(nonatomic, copy) NSString *subtitle;

@end

注释.m

#import "Annotation.h"

@implementation Annotation
@synthesize coordinate, title, subtitle;

@end

第 4 步:添加注释您将拥有自定义图像!

MapViewController.m

MKCoordinateRegion Bridge = { {0.0, 0.0} , {0.0, 0.0} };
Bridge.center.latitude = [[[testArr objectAtIndex:updates] objectAtIndex:1] floatValue];
Bridge.center.longitude = [[[testArr objectAtIndex:updates] objectAtIndex:0] floatValue];
Bridge.span.longitudeDelta = 0.01f;
Bridge.span.latitudeDelta = 0.01f;

Annotation *ann = [[Annotation alloc] init];
ann.title = @"I'm a pin";
ann.subtitle = @"Your subtitle";
ann.coordinate = Bridge.center;
[mapView addAnnotation:ann];

希望对您有所帮助!

关于objective-c - iOS 中 MKMapView 的自定义图钉?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15950698/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com