2012-08-12 70 views

回答

2
  1. 首先导入必要的框架(CoreLocation和MapKit)。
  2. 然后创建目标C NSObject类注释
  3. 设置其.H:

    #import <Foundation/Foundation.h> 
    
    #import <CoreLocation/CoreLocation.h> 
    
    #import <MapKit/MapKit.h> 
    
    @interface Annotation : NSObject <MKAnnotation> 
    
    @property (nonatomic) CLLocationCoordinate2D coordinate; 
    @property (nonatomic, copy) NSString *title; 
    @property (nonatomic, copy) NSString *subtitle; 
    
    @end 
    
  4. 安装其的.m:

    #import "Annotation.h" 
    
    @implementation Annotation 
    @synthesize coordinate, title, subtitle; 
    
    @end 
    
    1. 设置viewDidLoad

      if ([CLLocationManager locationServicesEnabled]) { 
      
          locationManager = [[CLLocationManager alloc] init]; 
      
          [locationManager setDelegate:self]; 
      
          [locationManager setDesiredAccuracy: kCLLocationAccuracyBestForNavigation]; 
      
          [locationManager startUpdatingLocation]; 
      
          } 
      
          self.mapView.delegate = self; 
      
    2. 设置的didUpdateToLocation

      // IMPORT ANNOTATION 
      
          - (void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation { 
      
      
          [locationManager stopUpdatingLocation]; 
      
          double miles = 3.10686; 
          double scalingFactor = ABS((cos(2 * M_PI * newLocation.coordinate.latitude/360.0))); 
      
          MKCoordinateSpan span; 
      
          span.latitudeDelta = miles/69.0; 
          span.longitudeDelta = miles/(scalingFactor * 69.0); 
      
          MKCoordinateRegion region; 
          region.span = span; 
          region.center = newLocation.coordinate; 
      
          [self.mapView setRegion:region animated:YES]; 
      
          Annotation *annot = [[Annotation alloc] init]; 
          annot.coordinate = newLocation.coordinate; 
      
          [self.mapView addAnnotation:annot]; 
      
          } 
      
0

最简单的方法是设置showsUserLocationYESMKMapView并在MKMapViewDelegate实施

- (void)mapView:(MKMapView *)mapView didUpdateUserLocation:(MKUserLocation *)userLocation { 
    MKCoordinateRegion region = MKCoordinateRegionMake(userLocation.location.coordinate, MKCoordinateSpanMake(0.01, 0.01)); 
    [mapView setRegion:region animated:NO]; 
} 

拥有地图视图移动当用户的位置被发现时的那个位置。

这将在地图视图上显示用户位置上的蓝色圆点,就像地图应用一样。