Ios 不要重复添加注释
我插入了一些来自json服务器的注释,但是我想检查注释是否已经在地图上,如果已经在地图上,就不再添加它。因为它们是相互叠加的,有人帮我解决这个问题吗 我的代码:Ios 不要重复添加注释,ios,Ios,我插入了一些来自json服务器的注释,但是我想检查注释是否已经在地图上,如果已经在地图上,就不再添加它。因为它们是相互叠加的,有人帮我解决这个问题吗 我的代码: // adiciona produtos ao mapa - (void)adicionaAnnotationsNoMapa:(id)objetos{ NSMutableArray *annotationsPins = [[NSMutableArray alloc] init]; for (NSDi
// adiciona produtos ao mapa
- (void)adicionaAnnotationsNoMapa:(id)objetos{
NSMutableArray *annotationsPins = [[NSMutableArray alloc] init];
for (NSDictionary *annotationDeProdutos in objetos) {
CLLocationCoordinate2D location;
AnnotationMap *myAnn;
myAnn = [[AnnotationMap alloc] init];
location.latitude = [[annotationDeProdutos objectForKey:@"latitude"] floatValue];
location.longitude = [[annotationDeProdutos objectForKey:@"longitude"] floatValue];
myAnn.coordinate = location;
myAnn.title = [annotationDeProdutos objectForKey:@"name"];
myAnn.subtitle = [NSString stringWithFormat:@"R$ %@",[annotationDeProdutos objectForKey:@"price"]];
myAnn.categoria = [NSString stringWithFormat:@"%@", [annotationDeProdutos objectForKey:@"id_categoria"]];
myAnn.idProduto = [NSString stringWithFormat:@"%@", [annotationDeProdutos objectForKey:@"id"]];
[annotationsPins addObject:myAnn];
}
[self.mapView addAnnotations:annotationsPins];
}
您可以遍历MkMapView上已经存在的注释,并查看它们是否已经存在:
NSArray * annotations = [self.mapView.annotations copy];
for (NSDictionary *annotationDeProdutos in objetos)
{
// Check if annotation in annotations are duplicate of annotationDeProdutos.
// You can match using name.
}
或者,如果只希望显示来自单个服务器调用的注释,则使用另一种方式:
[self.mapView removeAnnotations: self.mapView.annotations];
// Now add from JSON response.
您可以对每个批注执行此操作:
if(![self.mapView.annotations containsObject: myAnn]) {
[self.mapView addAnnotations: myAnn];
}
我用这个代码解决了这个问题:
// adiciona produtos ao mapa
- (void)adicionaAnnotationsNoMapa:(id)objetos{
NSMutableArray *annotationsPins = [[NSMutableArray alloc] init];
for (NSDictionary *annotationDeProdutos in objetos) {
CLLocationCoordinate2D location;
AnnotationMap *myAnn;
myAnn = [[AnnotationMap alloc] init];
location.latitude = [[annotationDeProdutos objectForKey:@"latitude"] floatValue];
location.longitude = [[annotationDeProdutos objectForKey:@"longitude"] floatValue];
myAnn.coordinate = location;
myAnn.title = [annotationDeProdutos objectForKey:@"name"];
myAnn.subtitle = [NSString stringWithFormat:@"R$ %@",[annotationDeProdutos objectForKey:@"price"]];
myAnn.categoria = [NSString stringWithFormat:@"%@", [annotationDeProdutos objectForKey:@"id_categoria"]];
myAnn.idProduto = [NSString stringWithFormat:@"%@", [annotationDeProdutos objectForKey:@"id"]];
if (self.mapView.annotations.count <1) {
[annotationsPins addObject:myAnn];
} else {
__block NSInteger foundIndex = NSNotFound;
[annotationsPins enumerateObjectsUsingBlock:^(AnnotationMap *annotation, NSUInteger idx, BOOL *stop) {
CLLocation *loc1 = [[CLLocation alloc] initWithLatitude:location.latitude longitude:location.longitude];
CLLocation *loc2 = [[CLLocation alloc] initWithLatitude:annotation.coordinate.latitude longitude:annotation.coordinate.longitude];
if ([loc1 distanceFromLocation:loc2] <= 1.0f) {
foundIndex = idx;
*stop = YES;
}
}];
if (foundIndex != NSNotFound) {
[annotationsPins addObject:myAnn];
}
}
}
[self.mapView addAnnotations:annotationsPins];
//adiciona produtos ao mapa
-(无效)adicionaAnnotationsNoMapa:(id)objetos{
NSMutableArray*annotationsPins=[[NSMutableArray alloc]init];
for(NSDictionary*对象中的注释deProdutos){
CLLOCATION坐标2D定位;
注释地图*myAnn;
myAnn=[[AnnotationMap alloc]init];
location.latitude=[[annotationDeProdutos objectForKey:@“latitude”]floatValue];
location.longitude=[[annotationDeProdutos objectForKey:@“longitude”]floatValue];
myAnn.坐标=位置;
myAnn.title=[annotationDeProdutos objectForKey:@“name”];
myAnn.subtitle=[NSString stringWithFormat:@“R$%@,[annotationDeProdutos objectForKey:@“price”];
myAnn.categoria=[NSString stringWithFormat:@“%@,[annotationDeProdutos objectForKey:@“id_categoria”];
myAnn.idProduto=[NSString stringWithFormat:@“%@,[annotationDeProdutos objectForKey:@“id”];
如果(self.mapView.annotations.count如何检查NSArray*批注上的批注是否重复?通过这种方式,它们仍然一个放置在另一个上。这是因为它们不是同一个批注,只是位于同一位置的批注,但具有不同的对象。您可以删除地图批注,然后添加其他批注在添加新的注释之前,请编辑新闻或比较注释的位置。