尝试了解如何在屏幕上按下按钮时在用户位置放置针脚。我是否需要使用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];
}
答案 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