从坐标中获取位置名称?

时间:2012-02-09 07:44:07

标签: iphone objective-c ios geolocation

我已经通过坐标获取了位置名称。

使用此代码

    reverseGeocoder = [[MKReverseGeocoder alloc] initWithCoordinate:newLocation.coordinate];
    reverseGeocoder.delegate = self;
    [reverseGeocoder start];

这里newLocation有我当前的位置

和reverseGeocoder是MKReverseGeocoder的类型。

我还添加框架MapKit并添加委托MKReverseGeocoderDelegate。

并在.m文件中定义此委托

-(void)reverseGeocoder:(MKReverseGeocoder *)geocoder didFindPlacemark:(MKPlacemark *)placemark
{...}

当我们启动此委托并获得带有(MKPlacemark *)地标的位置之后,我在上面的委托方法或任何其他用户定义的方法中显示此内容,如:

[[[[UIAlertView alloc] initWithTitle:@"Place" 
message:[[[NSString alloc] initWithFormat:@"%@",placemark] autorelease] 
delegate:self 
cancelButtonTitle:@"Okay" 
otherButtonTitles:nil] autorelease] show];

问题是我的警报视图每秒都会反复出现。

所以请告诉我如何停止reverseGeocoder或如何只看一次此警报视图。

提前完成。

1 个答案:

答案 0 :(得分:1)

这个问题是创建的,因为你每次都有新的位置,这个问题从两个方面被删除...... 1)使用两个位置之间的距离条件...当你的距离大于特定距离时,你会看到警报视图.....

2)如果使用想要一次看到警报然后使用此代码......

int count = 0;
-(void)reverseGeocoder:(MKReverseGeocoder *)geocoder didFindPlacemark:(MKPlacemark *)placemark
{

.......
if(count == 0)
{
[[[[UIAlertView alloc] initWithTitle:@"Place" 
message:[[[NSString alloc] initWithFormat:@"%@",placemark] autorelease] 
delegate:self 
cancelButtonTitle:@"Okay" 
otherButtonTitles:nil] autorelease] show];

count ++;

}
}

3)的概念

NSString * previousloaction; ///使用类似全局变量... NSString * currentloaction; ///像全局变量一样使用......

  -(void)reverseGeocoder:(MKReverseGeocoder *)geocoder didFindPlacemark:(MKPlacemark *)placemark
    {
    currentloaction=placemark;
    .......
   if(![previousloaction isEqucaltoString: currentloaction])
    {
    [[[[UIAlertView alloc] initWithTitle:@"Place" 
    message:[[[NSString alloc] initWithFormat:@"%@",placemark] autorelease] 
    delegate:self 
    cancelButtonTitle:@"Okay" 
    otherButtonTitles:nil] autorelease] show];

   previousloaction =currentloaction;

    }
    }