gpt4 book ai didi

objective-c - 使用 CLLocationManager 和 MKReverseGeocoder 获取城市名称

转载 作者:行者123 更新时间:2023-12-04 21:59:09 33 4
gpt4 key购买 nike

我正在尝试使用 MKReverseGeoCoder 获取用户当前所在城市的名称,但它有一些我无法识别的错误。以下是详细信息:

它有一些我无法识别的错误

Undefined symbols:
".objc_class_name_CLLocationManager", referenced from:
literal-pointer@__OBJC@__cls_refs@CLLocationManager in mapViewController.o
"_kCLLocationAccuracyNearestTenMeters", referenced from:
_kCLLocationAccuracyNearestTenMeters$non_lazy_ptr in mapViewController.o
ld: symbol(s) not found
collect2: ld returned 1 exit status

这是我的代码:

mapViewController.m

//
// mapViewController.m
// map
//
// Created by Ashutosh Tiwari on 7/23/10.
// Copyright ISU 2010. All rights reserved.
//
#import <MapKit/MapKit.h>
#import "mapViewController.h"

@implementation mapViewController


// Implement viewDidLoad to do additional setup after loading the view, typically from a nib.
- (void)viewDidLoad {
CLLocationManager *locationManager = [[[CLLocationManager alloc] init] autorelease];
locationManager.delegate = self;
locationManager.desiredAccuracy = kCLLocationAccuracyNearestTenMeters;
[locationManager startUpdatingLocation];

[super viewDidLoad];
}

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

MKReverseGeocoder *geoCoder = [[MKReverseGeocoder alloc] initWithCoordinate:newLocation.coordinate];
geoCoder.delegate = self;
[geoCoder start];
}

- (void)locationManager:(CLLocationManager *)manager didFailWithError:(NSError *)error
{
NSLog(@"locationManager:%@ didFailWithError:%@", manager, error);
}

- (void)reverseGeocoder:(MKReverseGeocoder *)geocoder didFindPlacemark:(MKPlacemark *)placemark
{
MKPlacemark * myPlacemark = placemark;

NSString *kABPersonAddressCityKey;
NSString *city = [myPlacemark.addressDictionary objectForKey:(NSString*) kABPersonAddressCityKey];
}

- (void)reverseGeocoder:(MKReverseGeocoder *)geocoder didFailWithError:(NSError *)error
{
NSLog(@"reverseGeocoder:%@ didFailWithError:%@", geocoder, error);
}

- (void)dealloc {
[super dealloc];
}

@end

最佳答案

添加CoreLocation.framework链接到你的项目(目标设置/链接库/添加/选择CoreLocation.framework)

添加:简要说明每个方法的作用:

  • viewDidLoad:
    创建 CLLocationManager 实例并开始更新位置 - 以获取当前用户坐标

  • locationManager:didUpdateToLocation:
    当 CLLocationManager 接收到用户坐标时被调用。现在我们可以将它们传递给 MKReverseGeocoder 以获取用户位置信息(国家、城市等)

  • locationManager:didFailWithError:reverseGeocoder:didFailWithError:
    处理可能的错误 - 只需在当前实现中记录它们

  • reverseGeocoder:didFindPlacemark:
    MKReverseGeocoder 找到您的坐标信息时被调用,您可以从您获得的 MKPlacemark 实例的相应字段中检索您需要的信息。

kABPersonAddressCityKey - 是地标地址字典中城市字段的关键字符串。它在 ABPerson.h header 中定义,因为地标和 ABRecord 地址的地址字段相同。因此,要使用该 key ,您可能还需要链接到 AddressBook 框架。

关于objective-c - 使用 CLLocationManager 和 MKReverseGeocoder 获取城市名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3330054/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com