限制MapView上的重复注释

时间:2012-12-20 11:04:31

标签: ios mkmapview mapkit mkannotation

如何在纬度和经度的唯一位置限制重复注释。

当我在地图上添加注释时,我可以在具有相同lat和long的一个点上添加注释,例如我在地图上添加一个引脚lat = 37.785834和long = -122.406417并将其命名为Bob的房子然后下一个当我再次在那个地方添加一个注释引脚并且它需要相同的纬度和长度并且我可以将它保存为Steve House时,但它不应该发生我希望它显示此位置已经占用的警报类型,选择一个不同的位置,所以没有lat long应该有重复的条目。 这与缩放或任何事情无关。

现在我想要一个代码来查询和检查数据库是否用户正在以相同的纬度和经度点击注释,即,我从不想通过检入数据库为相同的纬度/经度值创建重复的条目。 ...

示例代码:

#pragma mark - 
- (void) addSite2 { 
    AddSiteInfoViewController *vc = [[[AddSiteInfoViewController alloc] initWithCoordinate:pinAnnotation.coordinate] autorelease]; 
    [self.delegate pushViewController:vc animated:YES];
}

1 个答案:

答案 0 :(得分:0)

如果注释已经显示在地图中,您可以使用以下代码(无需检查数据库):

#pragma mark - 
- (void) addSite2 { 
    NSUInteger index = [self.mapView.annotations indexOfObjectPassingTest:
                        ^BOOL(MKAnnotation *anot1, NSUInteger index, BOOL *stop){
                            return (CLCOORDINATES_EQUAL( anot1.coordinate, pinAnnotation.coordinate));
                    }];
    if (index == NSNotFound)
    {
        AddSiteInfoViewController *vc = [[[AddSiteInfoViewController alloc] initWithCoordinate:pinAnnotation.coordinate] autorelease]; 
        [self.delegate pushViewController:vc animated:YES];
    }
}

(主要是写在我的头上,因此可能存在拼写错误或小错误。)

事实上,如果未显示注释...请使用Rajneesh071评论中给出的解决方案:Extracting Unique Objects from a Data Array