首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >cllocation和mkreversegeocoder地理编码器

cllocation和mkreversegeocoder地理编码器
EN

Stack Overflow用户
提问于 2010-04-14 20:06:19
回答 1查看 9.2K关注 0票数 3

我正在尝试用cllocation和mkreversegeocoder检索城市名称。在我的viewdidload方法中,我是cllocationmanager:

代码语言:javascript
复制
self.locManager = [[CLLocationManager alloc] init];
locManager.delegate = self;
locManager.desiredAccuracy = kCLLocationAccuracyBest;
[locManager startUpdatingLocation];

在此之后:

代码语言:javascript
复制
- (void) locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation 
*)newLocation
fromLocation:(CLLocation *)oldLocation {
//some code to retrieve my information

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

- (void)reverseGeocoder:(MKReverseGeocoder *)geocoder didFindPlacemark:(MKPlacemark  
*)placemark
{
MKPlacemark *myPlacemark = placemark;
citta.text = [placemark locality];
}

- (void)reverseGeocoder:(MKReverseGeocoder *)geocoder didFailWithError:(NSError *)error{
citta.text =@ "Unknow";

只有当我第一次得到我的值时,应用程序才有效。在第二次应用程序崩溃时。我想是因为地理编码器启动了,我想我必须有且只有一个实例在运行。(但我真的不敢相信这一点……)我可以用哪种方式来控制地理编码器的运行?

我已经看到我可以使用cllocationcoordinate2d在我的视图中建立istance地理编码器,但是...我可以用哪种方式检索newlocation.coordinate?

我已经部分解决了将地理编码器声明为类变量并检查

代码语言:javascript
复制
if (self.geocoder != nil) {
   [geocoder release];
}

但是...如果在我的

代码语言:javascript
复制
- (void)reverseGeocoder:(MKReverseGeocoder *)geocoder didFindPlacemark:(MKPlacemark  
*)placemark

或者在我的

代码语言:javascript
复制
- (void)reverseGeocoder:(MKReverseGeocoder *)geocoder didFailedWithError:(@NSError 
*)error

我释放还是取消我的对象?我觉得自己好傻:D

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-04-14 21:42:39

不要将反向地理编码器创建为本地变量。

看看苹果公司提供的CurrentAddress示例应用程序中的MKReverseGeocoder示例。请参见MapViewController.h和MapViewController.m。

在您的代码中遵循相同的模式。

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2637152

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档