【问题标题】:mapView "addAnnotation:addAnnotation" NOT dropping pin as desired with IF/ELSE statementsmapView "addAnnotation:addAnnotation" 不使用 IF/ELSE 语句根据需要删除引脚
【发布时间】:2012-09-13 15:44:40
【问题描述】:

在我现在已经筋疲力尽的事情上苦苦挣扎。这里有两个部分:

1) 如果用户搜索已识别并固定在 ViewDidLoad 上的相同坐标,我会尝试移除图钉。这部分工作。不可操作的部分是#2。

2) 当用户搜索任何其他位置时,我想要添加一个图钉,即 [self.mapView addAnnotation:addAnnotation];我的代码如下。

- (IBAction) showAddress // THIS IS A BUTTON WHICH LOCATES COORDINATES
{

[addressField resignFirstResponder];
MKCoordinateRegion region;
MKCoordinateSpan span;
span.latitudeDelta=0.2;
span.longitudeDelta=0.2;

CLLocationCoordinate2D location = [self addressLocation];
region.span=span;
region.center=location;

[mapView setRegion:region animated:TRUE];
[mapView regionThatFits:region];

if (location.longitude = (double) -73.2125) 
{   
    addAnnotation = [[AddressAnnotation alloc]initWithCoordinate:location]; 
    [self.mapView removeAnnotation:addAnnotation];
}

else  
{
    addAnnotation = [[AddressAnnotation alloc]initWithCoordinate:location]; 

    [self.mapView addAnnotation:addAnnotation];
    [addAnnotation release];
}
}

有什么想法吗?谢谢大家!

【问题讨论】:

  • 你是说你调用 removeAnnotation 真的有效吗?我看不出它会如何,因为您要删除仅在上面一行中创建的注释,甚至还没有添加到地图中。
  • (我发誓我不是在骚扰你,我发誓 - 只是根据我们在别处的客房服务讨论查看你的其他问题。:-))

标签: iphone xcode mkmapview mkannotation mkannotationview


【解决方案1】:

这一行:

if (location.longitude = (double) -73.2125)

进行分配 (=),而不是比较 (==)。

由于分配总是成功的,它总是转到removeAnnotation 部分。


但是,我不建议使用 == 比较双精度数(或任何浮点数)。
我建议改为检查这两个数字是否在彼此之间的一小段距离内。
示例见this answer

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-06-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-13
    • 2013-05-07
    • 2021-12-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多