我已经通过坐标获取了位置名称。
使用此代码
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或如何只看一次此警报视图。
提前完成。
答案 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;
}
}