Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/39.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何获取IPhone设备的当前纬度和经度_Iphone_Ios5_Core Location - Fatal编程技术网

如何获取IPhone设备的当前纬度和经度

如何获取IPhone设备的当前纬度和经度,iphone,ios5,core-location,Iphone,Ios5,Core Location,我正在开发一个应用程序,我想为IPhone获取设备当前的纬度和经度。是否可以在不使用GPS的情况下获取此信息 谢谢您可以使用CLLocationManager获取当前的lat和long。 创建CLLocationManager的iVar,并使用它 代码如下: - (void)viewDidLoad { [super viewDidLoad]; locationManager = [[CLLocationManager alloc] init]; locationManager.delegate

我正在开发一个应用程序,我想为IPhone获取设备当前的纬度和经度。是否可以在不使用GPS的情况下获取此信息


谢谢

您可以使用
CLLocationManager
获取当前的lat和long。 创建
CLLocationManager
iVar
,并使用它

代码如下:

- (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];
}

您可以使用
CLLocationManager
获取当前lat和long。 创建
CLLocationManager
iVar
,并使用它

代码如下:

- (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];
}

如果设备具有WiFi或蜂窝数据服务,则可以使用CLLocationManager获取当前位置,而无需GPS。位置将不会像你从GPS获得的那样精确,但你得到的结果比从GPS获得的结果要快


通过将desiredAccuracy属性设置为kCLLocationAccuracyKilometer,您可以从CLLocationManager请求非GPS位置。

如果设备具有WiFi或蜂窝数据服务,则可以使用CLLocationManager获取不带GPS的当前位置。位置将不会像你从GPS获得的那样精确,但你得到的结果比从GPS获得的结果要快


通过将desiredAccuracy属性设置为kCLLocationAccuracyKilometer,您可以从CLLocationManager请求非GPS位置。

您可以使用
CoreLocation framework

核心位置框架有一个重要的类
CLLocationManager

CLLocationManager
类处理在位置更改时向代理发送更新。它使用委托
CLLocationManagerDelegate
协议

你可以像这样使用它

#import <CoreLocation/CoreLocation.h>

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

}
执行以下代理方法以更改位置

 - (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;
}

您可以使用
CoreLocation框架

核心位置框架有一个重要的类
CLLocationManager

CLLocationManager
类处理在位置更改时向代理发送更新。它使用委托
CLLocationManagerDelegate
协议

你可以像这样使用它

#import <CoreLocation/CoreLocation.h>

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

}
执行以下代理方法以更改位置

 - (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;
}
使用Swift

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
是可选的,因此应使用Swift安全地展开。

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
是可选的,因此应该安全地展开