【问题标题】:Restrict Duplicate Annotation on MapView限制 MapView 上的重复注释
【发布时间】:2012-12-20 11:04:30
【问题描述】:

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

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

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

示例代码:

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

【问题讨论】:

  • 嘿,你怎么能在同一个纬度、经度上放下一个以上的针。
  • 如果您不更改引脚位置并继续在同一位置添加注释,它会继续在相同的纬度/经度处添加名称。
  • 你能给我提供这个或更多解释的样本吗..
  • #pragma mark - - (void) addSite2 { AddSiteInfoViewController *vc = [[[AddSiteInfoViewController alloc] initWithCoordinate:pinAnnotation.coordinate] autorelease]; [self.delegate pushViewController:vc 动画:YES]; }
  • 如果你编辑原始问题并将代码放在那里比在 cmets 中更容易阅读。

标签: ios mkmapview mapkit mkannotation


【解决方案1】:

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

#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 在 cmets 中给出的解决方案:Extracting Unique Objects from a Data Array

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-09-02
    • 2015-01-22
    • 2012-12-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-29
    相关资源
    最近更新 更多