2013-01-25 55 views

回答

3

可以使用CoreLocation framework

核心位置框架有一個重要的類CLLocationManager

CLLocationManager類可以在更改位置時隨時向代理髮送更新。它使用代理CLLocationManagerDelegate協議。

,你可以使用它像

#import <CoreLocation/CoreLocation.h> 

@interface ViewController : UIViewController 
    <CLLocationManagerDelegate> 
{ 
    CLLocationManager *locationManager; 

} 

在viewDidLoad中設立的LocationManager這樣

- (void)viewDidLoad { 
    [super viewDidLoad]; 
    locationManager = [[CLLocationManager alloc] init]; 
    locationManager.delegate = self; 
    locationManager.distanceFilter = kCLDistanceFilterNone; // whenever we move 
    locationManager.desiredAccuracy = kCLLocationAccuracyHundredMeters; // 100 m 
    [locationManager startUpdatingLocation]; 
} 

實施得到改變位置

- (void)locationManager:(CLLocationManager *)manager 
    didUpdateToLocation:(CLLocation *)newLocation 
      fromLocation:(CLLocation *)oldLocation 
{ 
    NSInteger degrees = newLocation.coordinate.latitude; 
    double decimal = fabs(newLocation.coordinate.latitude - degrees); 
    int minutes = decimal * 60; 
    double seconds = decimal * 3600 - minutes * 60; 
    NSString *lattitudeStr = [NSString stringWithFormat:@"%d° %d' %1.4f\"", 
        degrees, minutes, seconds]; 
    lattitudeLabel.text = lattitudeStr; 
    degrees = newLocation.coordinate.longitude; 
    decimal = fabs(newLocation.coordinate.longitude - degrees); 
    minutes = decimal * 60; 
    seconds = decimal * 3600 - minutes * 60; 
    NSString *longitudeStr = [NSString stringWithFormat:@"%d° %d' %1.4f\"", 
        degrees, minutes, seconds]; 
    longitudeLabel.text = longitudeStr; 
} 
1

您可以使用CLLocationManager來獲取當前lat和長。 創建一個iVarCLLocationManager並使用它。

下面是代碼:

- (void)viewDidLoad 
{ 
[super viewDidLoad]; 
locationManager = [[CLLocationManager alloc] init]; 
locationManager.delegate = self; 
locationManager.distanceFilter = kCLDistanceFilterNone; 
locationManager.desiredAccuracy = kCLLocationAccuracyBest; 
[locationManager startUpdatingLocation]; 
} 


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

currentLat = [NSString stringWithFormat:@"%f",newLocation.coordinate.latitude]; 
currentLong = [NSString stringWithFormat:@"%f",newLocation.coordinate.longitude]; 
} 
+0

正常工作,,,,, – ravinder521986

0
CLLocationManager *locationManager = [[CLLocationManager alloc] init]; 
CLLocation* currentLocation = [locationManager location]; 

NSString *loc = [NSString stringWithFormat:@"%f,%f",currentLocation.coordinate.latitude, currentLocation.coordinate.longitude]; 
NSLog(@"location:%@", loc); 
0

您可以通過使用CLLocationManager如果該設備具有WiFi或移動數據服務中獲得不帶GPS當前位置。這個位置不會像你從GPS那裏得到的那樣準確,但你得到的結果比GPS更快。

您可以通過將desiredAccuracy屬性設置爲kCLLocationAccuracyKilometer來從CLLocationManager請求非GPS位置。

0

使用斯威夫特

下面委託mehod
import CoreLocation 

獲取當前位置

let locationManager = CLLocationManager() 
locationManager.distanceFilter = kCLDistanceFilterNone 
locationManager.desiredAccuracy = kCLLocationAccuracyBest 

//get the most recently retrieved user location 
if let currentLocation = locationManager.location { 
    let longitude = currentLocation.coordinate.longitude 
    let latitude = currentLocation.coordinate.latitude 
    //work with the received data 
} 

注意locationManager.location是可選的,因此應該是安全地展開。

相關問題