在xcode中获取用户的当前地址?

Posted

技术标签:

【中文标题】在xcode中获取用户的当前地址?【英文标题】:get current address of user in xcode? 【发布时间】:2012-11-17 06:11:10 【问题描述】:

我需要获取用户的确切当前地址(国家、州、城市)。所以我去查找经纬度,然后通过使用反向地理编码从中找出。但无法自行获取纬度和经度。我使用xcode 4.1并在iphone模拟器中进行测试。

这是我正在处理的代码:

- (void)viewDidLoad

    [super viewDidLoad];
    locationManager = [[CLLocationManager alloc] init];
    locationManager.distanceFilter = kCLDistanceFilterNone;
    locationManager.desiredAccuracy = kCLLocationAccuracyHundredMeters; 
    [locationManager startUpdatingLocation];
    NSLog(@"%@", [self deviceLocation]);


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

    int degrees = newLocation.coordinate.latitude;
    double decimal = fabs(newLocation.coordinate.latitude - degrees);
    int minutes = decimal * 60;
    double seconds = decimal * 3600 - minutes * 60;
    NSString *lat = [NSString stringWithFormat:@"%d° %d' %1.4f\"", 
                     degrees, minutes, seconds];
    latLabel.text = lat;
    degrees = newLocation.coordinate.longitude;
    decimal = fabs(newLocation.coordinate.longitude - degrees);
    minutes = decimal * 60;
    seconds = decimal * 3600 - minutes * 60;
    NSString *longt = [NSString stringWithFormat:@"%d° %d' %1.4f\"", 
                       degrees, minutes, seconds];
    longLabel.text = longt;

如何找到经纬度从而找到用户的地址?

编辑:

将我的版本更新到 Xcode 4.5。但是还是看不到位置.....?是吗?

【问题讨论】:

Xcode 和这个问题真的没有任何关系... 【参考方案1】:

请下载this file

在我附加的 zip 文件中,有 4 个文件:

LocationGetter.h 和 .m

PhysicalLocation.h 和 .m

你只需要导入

#import "PhysicalLocation.h"

 PhysicalLocation *physicalLocation = [[PhysicalLocation alloc] init];
    [physicalLocation getPhysicalLocation];

getPhysicalLocationPhysicalLocation.m 类中

#pragma mark MKReverseGeocoder Delegate Methods
- (void)reverseGeocoder:(MKReverseGeocoder *)geocoder didFindPlacemark:(MKPlacemark *)placemark


    NSLog(@"%@",placemark);

    objcntrAppDelegate = (yourappDeleger *)[[UIApplication sharedApplication]delegate];

    objcntrAppDelegate.strCountry=placemark.country;
    objcntrAppDelegate.strSuburb=placemark.subAdministrativeArea;


    [[NSNotificationCenter defaultCenter] postNotificationName:@"ReceivedAddress" object:nil userInfo:nil];


     [geocoder autorelease];

您可以得到所有您需要的所有 lat、lng、当前城市、国家/地区。希望它可以帮助你。 注意:- 模拟器给出的结果不正确,您必须在设备上测试。

更新

UpdatedDEMO

【讨论】:

但我发现 MKReverseGeocoder 在 ios5 中已被弃用..我还能用吗? 我可以使用这个并在 ios6 或 ios5 中得到结果,它对我有用,为什么我只是为你发布这个方法 我的小伙伴在同样的大火中工作,得到的结果也是如此 k 我已经下载了 zip 文件。现在我应该将它们全部附加到我的项目中吗? 是的,它的 4 个文件添加到您的项目中拖放并检查复制选项,然后在您的应用程序委托中,您只需将文件导入为我的答案并按照我的帖子进行操作【参考方案2】:

改变:

locationManager.desiredAccuracy = kCLLocationAccuracyBest;

现在应该以float 而不是int 获得纬度和经度。

CLLocation *location = [locationManager location];
// Configure the new event with information from the location
CLLocationCoordinate2D coordinate = [location coordinate];

float longitude=coordinate.longitude;
float latitude=coordinate.latitude;

使用CLGeocoder按经纬度查找用户地址。

编辑:参考this链接。

【讨论】:

以上是关于在xcode中获取用户的当前地址?的主要内容,如果未能解决你的问题,请参考以下文章

获取与网络连接的 IP 地址的当前用户名

获取设备当前空闲/已使用/应用程序内存,如Xcode调试器

怎么用百度地图api自动获取当前位置(谷歌的也行)

如何从firebase获取当前用户地址

如何在 php 7.1.1 中打印当前用户的 IP 地址

javascript获取当前用户访问的宽带IP地址