2013-09-21 26 views
1

這是我實現文件:改變位置座標,並調用didUpdateUserLocation方法

#import "mapViewController.h" 
@interface mapViewController() 
@end 
@implementation mapViewController 
@synthesize mapView,source,dest,latdest,latsource,longdest,longsource; 
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil 
{ 
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]; 
    if (self) 
    { 
     [email protected]"delhi"; 
    // Custom initialization 
    } 
    return self; 
} 
- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    CLGeocoder *geocoder1 = [[CLGeocoder alloc] init]; 
    [geocoder1 geocodeAddressString:source 
       completionHandler:^(NSArray* placemarks, NSError* error) 
    { 
     for (CLPlacemark* aPlacemark in placemarks) 
     { 
      CLLocationCoordinate2D coordinate; 
      coordinate.latitude = aPlacemark.location.coordinate.latitude; 
      latsource=&coordinate.latitude; 
      coordinate.longitude = aPlacemark.location.coordinate.longitude; 
      longsource=&coordinate.longitude; 
      MKPointAnnotation *annotation = [[MKPointAnnotation alloc] init]; 
      [annotation setCoordinate:(coordinate)]; 
      [annotation setTitle:source]; 
      annotation.subtitle = @"I'm here!!!"; 
      [self.mapView addAnnotation:annotation]; 
     } 
    }]; 
} 
- (void)mapView:(MKMapView *)mapView didUpdateUserLocation:(MKUserLocation *)userLocation 
{ 
    MKCoordinateRegion region =MKCoordinateRegionMakeWithDistance(userLocation.coordinate, 800, 800); 
    [self.mapView setRegion:[self.mapView regionThatFits:region] animated:YES]; 
    MKPointAnnotation *point = [[MKPointAnnotation alloc] init]; 
    point.coordinate = userLocation.coordinate; 
    point.title = @"Where am I?"; 
    point.subtitle = @"I'm here!!!";  
    [self.mapView addAnnotation:point]; 
    [self.view addSubview:self.mapView]; 
} 
- (void)didReceiveMemoryWarning 
{ 
    [super didReceiveMemoryWarning]; 
    // Dispose of any resources that can be recreated. 
} 
@end 

這是我的頭文件:

#import <UIKit/UIKit.h> 
#import <MapKit/MapKit.h> 
@interface mapViewController : UIViewController <MKMapViewDelegate> 
@property (strong, nonatomic) IBOutlet MKMapView *mapView; 
@property(strong,nonatomic) NSString *source,*dest; 
@property(nonatomic) CLLocationDegrees *latsource,*longsource; 
@property(nonatomic) CLLocationDegrees *latdest,*longdest; 
@end 

首先,我想知道爲什麼didUpdateUserLocation方法不會被調用。我也想知道代碼添加一個目標,其座標存儲在最長和最長的位置。它們都會從靜態變量「dest」中獲取它們的值,它的值爲「delhi」。我最終的目標是跟蹤從源座標(latsource,longsour, ce)到目標座標(最新,最長)。 我是ios開發新手,所以我可能會做一些noob錯誤。如果您沒有設置mapView.delegate = self;

如果你使用一個類,它有委託方法

回答

0

didUpdateUserLocation方法將不會被調用,並且要使用它們,每次你應該設置其委託=自

在頭部的MapView

:不要使用相同的名稱代表

@property (weak, nonatomic) IBOutlet MKMapView *myMapView; 

請確保您連接的T他IBOutlet MKMapView *myMapViewIterfaceBuilder

在實現文件:

@synthesize myMapView; 

- (void)viewDidLoad

myMapView.delegate = self; 

你必須糾正所有self.mapViewmyMapView

你犯了一個非常大的錯誤:

如果您使用IBOutlet,則必須在InterfaceBuilder上添加並連接它。 也可以創建一切從代碼:

@property (weak, nonatomic) MKMapView *myMapView; 
myMapView = [[MKMapView alloc] initWithFrame:CGRectMake(0,0,320,480)]; 

然後用

[self.view addSubview:myMapView]; 
+0

添加屏幕,我加入改變了代表,但沒有。 順便說一句,我已經鏈接地圖與文件的所有者在筆尖。 –

+0

我編輯了我的答案 – incmiko

+0

我實現了你所說的一切,但仍然是應用程序工作的早期工作:( –