3

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

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

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

示例代码:

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

1 回答 1

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 评论中给出的解决方案:从数据数组中提取唯一对象

于 2012-12-27T12:26:42.517 回答