2013-03-13 56 views
3

我想要创建一个显示精确位置(坐标:纬度45.733333°和经度9.133333°)的mapView,并添加带标题和副标题的简单注释。 ma必须是静态的,不需要拥有当前的用户位置或其他任何东西。mapView在IO中显示特定位置和注释

我在标签式应用程序的简单视图控制器中添加了地图查看器。 我有我的MapViewController文件,我有他们连接(我猜)我的ViewController,但我似乎无法找到一个教程来做我需要的东西,其他人很复杂,我认为他们做了很多,我是什么非常需要,而且我是初学者,所以我遇到了一些麻烦。

谢谢!

回答

2

试试这个:

CLLocationCoordinate2D coord; 
    coord.latitude = 45.733333; 
    coord.longitude = 9.133333; 

    MKAnnotation *ann = [[MKAnnotation alloc] initWithLocation:coord]; 
    [ann setTitle:@"Title"]; 
    [ann setSubtitle:@"Subtitle"]; 
    [map addAnnotation:ann]; 

不要忘记变量更改为您的变量名。

编辑

解决方案:

创建一个类AddressAnnotation并粘贴此代码:

AddressAnnotation.h

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

@interface AddressAnnotation : NSObject <MKAnnotation> { 
    CLLocationCoordinate2D _coordinate; 
    NSString *_title; 
} 

@property (nonatomic, retain) NSString *title; 

-(id)initWithCoordinate:(CLLocationCoordinate2D)c; 

@end 

AddressAnnotation.m

#import "AddressAnnotation.h" 

@implementation AddressAnnotation 

- (NSString *)subtitle{ 
    return nil; 
} 

- (NSString *)title{ 
    return _title; 
} 

- (CLLocationCoordinate2D)coordinate{ 
    return _coordinate; 
} 

-(id)initWithCoordinate:(CLLocationCoordinate2D)c{ 
    _coordinate = c; 
    return self; 
} 

@end 

现在,这里是处理地图和创建注释类:

MapViewController.h

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

@interface MapViewController : UIViewController 

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

- (IBAction)changeMapType:(UISegmentedControl *)control; 

@end 

MapViewController.m

#import "MapViewController.h" 
#import "AddressAnnotation.h" 

@interface MapViewController() 

@end 

@implementation MapViewController 

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil 
{ 
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]; 
    if (self) { 
     // Custom initialization 
    } 
    return self; 
} 

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    // Do any additional setup after loading the view from its nib. 

    CLLocationCoordinate2D location; 
    location.latitude = -15.830731; // change to your coordinate latitude 
    location.longitude = -47.8753; // change to your coordinate longitude 

    AddressAnnotation *addAnnotation = [[AddressAnnotation alloc] initWithCoordinate:location]; 
    addAnnotation.title = [NSString stringWithFormat:@"Title for you annotation"]; 

    MKCoordinateRegion region; 
    MKCoordinateSpan span; 
    span.latitudeDelta = 0.002;  // 0.0 is min value u van provide for zooming 
    span.longitudeDelta= 0.002; 

    region.span=span; 
    region.center =location;  // to locate to the center 
    [_mapView addAnnotation:addAnnotation]; 
    [_mapView setRegion:region animated:TRUE]; 
    [_mapView regionThatFits:region]; 

} 

- (void)didReceiveMemoryWarning 
{ 
    [super didReceiveMemoryWarning]; 
    // Dispose of any resources that can be recreated. 
} 

@end 
+0

谢谢,但我怕我需要更具体的解释。我可以将代码放在.h和.m文件中吗?我想确保我完成了所有其他代码(我使用了不同的教程,恐怕我搞砸了)。谢谢! – Ivy 2013-03-13 21:31:58

+0

这是我的空代码,就像我创建我的控制器一样。 [链接](http://dl.dropbox.com/u/1074257/code_initial.txt) – Ivy 2013-03-13 21:42:12

+0

你必须添加一个MKMapView到你的视图。你做到了吗? – CainaSouza 2013-03-13 21:44:10