如何在模拟器中获取 ios 中的当前位置?

Posted

技术标签:

【中文标题】如何在模拟器中获取 ios 中的当前位置?【英文标题】:How to get current location in ios in simulator? 【发布时间】:2016-10-26 20:52:38 【问题描述】:

我正在使用此代码获取当前位置,但没有得到正确的结果来获取模拟器中的当前位置,

-(void)initLocationManager

    locationManager=[[CLLocationManager alloc] init];
    locationManager.delegate = self;
    if (([locationManager respondsToSelector:@selector(requestWhenInUseAuthorization)]))
    
        [locationManager requestWhenInUseAuthorization];
    
    locationManager.desiredAccuracy = kCLLocationAccuracyBest;
    locationManager.distanceFilter = kCLDistanceFilterNone;

    //[locationManager requestWhenInUseAuthorization];
    // [locationManager startMonitoringSignificantLocationChanges];
    [locationManager startUpdatingLocation];



-(void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)locations

    CLLocation* location = [locations lastObject];
    //   NSDate* eventDate = location.timestamp;
    // NSTimeInterval howRecent = [eventDate timeIntervalSinceNow];

    latitud = location.coordinate.latitude;
    longitud = location.coordinate.longitude;
    NSLog(@"%f,%f",latitud,longitud);
    [locationManager stopUpdatingLocation];


请告诉我如何获得这个当前位置,我从早上开始就累了。请帮帮我

【问题讨论】:

位置更新适用于真实设备。您将无法在模拟器中获取当前位置。 您无法使用模拟器获取当前位置,请使用设备。 我正在从调试>位置>自定义位置设置位置,但仍然没有得到我在那里设置的位置 嘿 @user6438311 你解决了吗? 不,我没有得到我想要的响应,我没有得到当前位置的纬度和经度,因此我将测试我的设备,以便它可能在设备上正确显示 【参考方案1】:

使用以下步骤创建 GPX 文件:

进入项目--> 添加新的--> ios --> 资源并选择GPX文件

现在您需要在 GPX 文件中编写如下小代码:
<!--
        Provide one or more waypoints containing a latitude/longitude pair. If you provide one
        waypoint, Xcode will simulate that specific location. If you provide multiple waypoints,
        Xcode will simulate a route visitng each waypoint.
 -->
<wpt lat="37.331705" lon="-122.030237">  // here change lat long to your lat long
     <name>Cupertino</name> // here set name 

     <!--   
            Optionally provide a time element for each waypoint. Xcode will interpolate movement
            at a rate of speed based on the time elapsed between each waypoint. If you do not provide
            a time element, then Xcode will use a fixed rate of speed.

            Waypoints must be sorted by time in ascending order.
      -->
     <time>2014-09-24T14:55:37Z</time>
</wpt>

现在去编辑架构

然后选择run 并在Option 菜单中选择如下所示出现我们的GPX 文件选择并运行并关闭:

现在您可以在 GPX 文件中获取添加的 lat long 的位置。

更新

以下是启用位置的代码:

在 info.plist 中,您需要设置 NSLocationWhenInUseUsageDescriptionNSLocationWhenInUseUsageDescription 关于定位服务。

现在是你的 .h 类

#import <UIKit/UIKit.h>
#import <CoreLocation/CoreLocation.h>
@interface ViewController : UIViewController<CLLocationManagerDelegate>


    __weak IBOutlet UILabel *lblLat;
    __weak IBOutlet UILabel *lblLong;

@property(strong,nonatomic) CLLocationManager *locationManager;
@end

.M 类

- (void)viewDidLoad 
    [super viewDidLoad];

    self.locationManager = [[CLLocationManager alloc] init];
    [self.locationManager requestWhenInUseAuthorization];


    self.locationManager.delegate = self;
    self.locationManager.desiredAccuracy = kCLLocationAccuracyBest;

    [self.locationManager startUpdatingLocation];
    // Do any additional setup after loading the view, typically from a nib.


- (void)didReceiveMemoryWarning 
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.

- (void)locationManager:(CLLocationManager *)manager didFailWithError:(NSError *)error

    NSLog(@"didFailWithError: %@", error);
    UIAlertView *errorAlert = [[UIAlertView alloc]
                               initWithTitle:@"Error" message:@"Failed to Get Your Location" delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil];
    [errorAlert show];


- (void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation

    NSLog(@"didUpdateToLocation: %@", newLocation);
    CLLocation *currentLocation = newLocation;

    if (currentLocation != nil) 
        lblLat.text = [NSString stringWithFormat:@"%.8f", currentLocation.coordinate.latitude];
        lblLong.text = [NSString stringWithFormat:@"%.8f", currentLocation.coordinate.longitude];
    

工作演示代码:https://github.com/nitingohel/UserCurrentLocation_Objc

【讨论】:

必须有一些代码用于在设备中查找当前位置并将该纬度和经度保存在某个字符串中,如果是,请分享 但我没有从上面的代码中获取当前位置,我已经完成了所有事情,我得到了零 我只是创建了一个示例代码和附加的演示,并检查您是否缺少设置启用位置服务 2016-06-24 17:23:58.880 UserCurrentLocation_Objc[4617:171406] didFailWithError: Error Domain=kCLErrorDomain Code=0 "(null)" 2016-06-24 17:23:58.972 UserCurrentLocation_Objc[ 4617:171406] 模拟器用户已请求新的图形质量:100 即将出现此错误 非常感谢@Nitin Gohel【参考方案2】:

在模拟器中你需要在调试区选择位置模拟

或在编辑方案中

或者您可以添加自己的带有坐标的 GPX 文件

【讨论】:

必须有一些代码用于在设备中查找当前位置并将该纬度和经度保存在某个字符串中,如果是,请分享 您是否在startUpdatingLocation 之后输入了委托方法didUpdateLocations 如果没有尝试将属性添加到您的类并设置它self.locationManager = [[CLLocationManager alloc] init]; 这非常适合模拟器。通过移动和搜索自定义当前位置的任何其他解决方案。我用谷歌集成吊舱成功地解决了这个问题。但是当我定制时。它确实有效。【参考方案3】:

模拟器无法直接获取当前位置,需要到模拟器Debug&gt;location&gt;custom的位置,设置经纬度。

【讨论】:

我正在从调试>位置>自定义位置设置位置,但仍然没有得到我在那里设置的位置 试试这个,先在位置选择无,然后再次点击自定义位置并设置经纬度 必须有一些代码用于在设备中查找当前位置并将该纬度和经度保存在某个字符串中,如果是,请分享

以上是关于如何在模拟器中获取 ios 中的当前位置?的主要内容,如果未能解决你的问题,请参考以下文章

如何获取文件在`BufReader`中的当前位置?[重复]

如何获取android移动设备的当前位置经纬度?

iOS 7 到 iOS 8 中当前位置纬度和经度的不同行为

如何在棒棒糖或更高版本中打开位置并获取当前位置

如何在 iOS 模拟器中禁用系统位置警报

如何在 iOS 4.0/4.2 中获取当前位置的经纬度?