MapKit,使用按钮在一个位置上放置引脚

时间:2013-07-14 00:27:15

标签: ios objective-c mapkit

尝试了解如何在屏幕上按下按钮时在用户位置放置针脚。我是否需要使用Mkannotation,我希望此引脚在将来放置新引脚时消失。这是我在controller.h中的代码。此外,经度和纬度就是例如。

感谢

@implementation ViewController

- (void)viewWillAppear:(BOOL)animated {

CLLocationCoordinate2D zoomLocation;
zoomLocation.latitude = 39.281516;
zoomLocation.longitude = -76.580806;

MKCoordinateRegion viewRegion = MKCoordinateRegionMakeWithDistance(zoomLocation,             
0.1*METERS_PER_MILE, 0.1*METERS_PER_MILE);  

[_mapView setRegion:viewRegion animated:YES];

} 

1 个答案:

答案 0 :(得分:1)

虽然我认为位置感知编程指南的Adding Annotations to a Map部分对此进行了详细讨论,我有一些观察:

你问“我需要使用MKAnnotation吗?”是的,没有。

  • 是的,所有注释都应符合MKAnnotation协议。正如该指南所描述的那样,如果您可以创建自己的注释子类,则需要它明确声明它符合MKAnnotation协议。

  • 但是,不,您不必总是创建符合MKAnnotation协议的自己的注释类。您还可以使用预定义的注记类MKPointAnnotation(它本身已经符合MKAnnotation协议),例如:

    MKPointAnnotation *annotation = [[MKPointAnnotation alloc] init];
    annotation.coordinate = CLLocationCoordinate2DMake(39.281516, -76.580806);
    annotation.title = @"Lens Crafters";
    annotation.subtitle = @"2400 Boston St.";
    [self.mapView addAnnotation:annotation];
    

如果您想在地图上删除旧注释时消失旧注释,您只需(a)保留对旧注释的引用; (b)在添加新注释时,删除旧注释(如果您有旧注释);然后(c)添加新的注释。

因此,您可能已为注释定义了一些类属性:

@property (weak, nonatomic) id<MKAnnotation> annotation;

(两个侧面观察:首先,您使用weak还是strong取决于您和您的应用设计。通过说weak,我说当注释是从地图中删除后,我很高兴发布annotation。也许您希望保留它,直到您明确nil此属性为止,在这种情况下,您将创建此属性strong。这完全取决于你和你的应用程序的目标。其次,我使用类型id<MKAnnotation>(即“符合MKAnnotation的对象”),这使得它更灵活。如果你以后替换{{ 1}}使用您自己的自定义注释类,此属性仍然有效。但是如果您想明确定义此MKPointAnnotation属性为annotation以匹配您的注释添加例程,那也没关系。 )

无论如何,既然您已拥有此属性,现在可以编写一个方法来向地图添加注释(删除旧注释):

MKPointAnnotation