给定一对纬度和经度浮点数以及MapView,如何让MapView在该位置放置一个引脚并“缩放”屏幕以显示位置?
我已经阅读了一些SO帖子,他们似乎都是关于这方面的具体方面,但我无法将它们“放在一起”。
非常感谢! -Frank
答案 0 :(得分:1)
示例应用WorldCities显示了如何放大到给定位置,但不会在那里放置引脚。另一个名为MapCallouts的示例应用程序确实会丢弃引脚,但它不会缩放。
缩放部分很简单(参见WorldCities中的didChooseWorldCity方法)。
要删除引脚,您必须将addAnnotation消息发送到mapview并向其发送一个实现MKAnnotation协议的对象。首先,您需要创建一个实现MKAnnotation的类。这是一个名为MyMapPin的例子:
//MyMapPin.h...
#import <MapKit/MapKit.h>
@interface MyMapPin : NSObject <MKAnnotation> {
CLLocationCoordinate2D coordinate;
NSString *subtitle;
NSString *title;
}
@property (nonatomic, readonly) CLLocationCoordinate2D coordinate;
@property (nonatomic,retain) NSString *subtitle;
@property (nonatomic,retain) NSString *title;
- (id) initWithCoords:(CLLocationCoordinate2D) coords;
@end
//MyMapPin.m...
#import "MapPin.h"
@implementation MyMapPin
@synthesize coordinate;
@synthesize subtitle;
@synthesize title;
- (id) initWithCoords:(CLLocationCoordinate2D) coords {
self = [super init];
if (self != nil) {
coordinate = coords;
}
return self;
}
- (void) dealloc
{
[title release];
[subtitle release];
[super dealloc];
}
@end
现在,您可以通过在animateToPlace方法的开头添加此代码来修改WorldCities示例:
MyMapPin *pin = [[MyMapPin alloc] initWithCoords:worldCity.coordinate];
[mapView addAnnotation:pin];
[pin release];
WorldCities应用程序中的worldCity.coordinate只是CLLocationCoordinate2D类型的属性,它有两个字段纬度和经度。这两个花车会进去。
请注意,addAnnotation只会在城市放置一个引脚。要获得动画丢弃引脚,还必须实现viewForAnnotation方法并将animatesDrop设置为YES。请参阅MapCallouts中的MapViewController.m中的示例。还要将mapview的委托设置为实现viewForAnnotation方法的任何位置(通常是self / File的所有者)。