2011-08-21 67 views
0

我已經進入了ios的mapkit和corelocation。我只是試圖顯示地圖並放大當前位置。我可以用我的位置繪製地圖。我可以得到我目前的位置。我無法將位置數據導入地圖方法。我有點小事,但認爲我知道我在做什麼,直到這一點! :)任何幫助表示讚賞。我的代碼在這裏,哪些作品,但在大西洋中間,0和0 lat!與ObjC和MapKit CoreLocation卡在一起

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

locationManager = [[CLLocationManager alloc] init]; 
[locationManager setPurpose:@"What use is a nav app if it doesn't know where you are?!?"]; 
[locationManager setDelegate:self ]; 
[locationManager setDesiredAccuracy:kCLLocationAccuracyBestForNavigation]; 
[locationManager setDistanceFilter:10]; 
[locationManager startUpdatingLocation]; 

mapView=[[MKMapView alloc] initWithFrame:self.view.bounds]; 
[self.view insertSubview:mapView atIndex:0]; 
mapView.showsUserLocation = TRUE; 
mapView.mapType = MKMapTypeStandard; 


MKCoordinateSpan span; 
span.latitudeDelta=0.2; 
span.longitudeDelta=0.2; 

CLLocationCoordinate2D location = mapView.userLocation.coordinate; 

MKCoordinateRegion region; 
region.span=span; 
region.center=location; 

[mapView setRegion:region animated:TRUE]; 
[mapView regionThatFits:region]; 
[self.view insertSubview:mapView atIndex:0]; 

} 

-(void)locationManager:(CLLocationManager *)manager 
didUpdateToLocation:(CLLocation *)newLocation 
     fromLocation:(CLLocation *)oldLocation 
{ 
CLLocationCoordinate2D here = newLocation.coordinate; 
NSLog(@"%f %f", here.latitude, here.longitude); 

[locationManager stopUpdatingLocation]; 

} 
+0

您是使用模擬器還是實際的設備? –

+0

我在兩者上都試過。完全相同的結果,僅在模擬器上的位置顯示爲Cupertino。 iPhone上的位置顯示倫敦。不知道如何讓我的當前位置座標進入地圖。 – Hoppo

+0

對不起,也許這只是我,但我完全不明白這個問題 - 你的位置顯示在地圖上,但你不能得到地圖的方法?它在哪裏返回(0,0)? – fbrozovic

回答

1

地圖視圖userLocation通常不會設置showsUserLocation爲YES後可用權。

實施地圖視圖的代理方法didUpdateUserLocationdidFailToLocateUserWithError。您需要設置地圖視圖的delegate屬性,否則它們將不會被調用。在didUpdateUserLocation方法中更改地圖的區域或中心 - 不在viewDidLoad中。

或者,在您實施的CLLocationManager的didUpdateToLocation中設置該區域。它會被叫嗎?也執行它的didFailWithError方法,看看它是否被調用。

如果您使用的是MKMapView,則只需要使用showsUserLocation或CLLocationManager(而不是兩者)即可獲取當前位置。但要獲得藍色大理石,您需要使用showsUserLocation。

另外,你爲什麼要在mapView上執行兩次insertSubview?

+0

謝謝。那樣做了。我更改了didUpdateToLocation方法中的地圖中心,並按預期工作。還刪除了我的一個insertSubviews。非常感謝 – Hoppo