MapView iOS上的问题

时间:2015-05-21 12:46:56

标签: ios objective-c ios8 mkmapview

我正在我的应用程序上开发MapView。我显示my current location and also nearest people locations.但是我的问题是我通过WebServices获取最近的人位置(latitude and longitude values。我在MapView上显示了所有人的位置但是有些时候人数会增加,在那种情况下,我显示了我得到的人们的纬度和经度值,这个纬度和经度值每2秒刷新一次,通过使用这个代码,我在MapView上显示引脚。

 for (int y = 0; y <[lat count]; y++)
    {
        NSLog(@"MapView ");

        marketAnnotation = [[MKPointAnnotation alloc]init];
        annotationCoord.latitude = [[lat objectAtIndex:y]floatValue];
        annotationCoord.longitude =[[lon objectAtIndex:y]floatValue];
        marketAnnotation.coordinate = annotationCoord;
        [self.mapView addAnnotation:marketAnnotation];
        [marketLocations addObject:marketAnnotation];

        [mapView reloadInputViews];

    }

但我希望只要人数减少就显示,我只需要在MapView上显示该人数

下图是我附近有三个成员的人

enter image description here

由我在MapView上显示三个人。但是我需要显示每当人们在MapView上自动减少时,它们会在MapView上消失。就像这张图片

enter image description here

上面的图片只有一个图钉,但我需要根据人们的纬度和经度值自动显示。如何删除不在我所在位置的人。可以请您建议我如何修改我的代码以自动显示在MapView上增加或减少。谢谢

1 个答案:

答案 0 :(得分:0)

在加载新位置之前,您需要删除地图视图中旧位置的所有注释。

for (id<MKAnnotation> annotation in mapView.annotations) 
    {
        if ([annotation isKindOfClass:[MKPointAnnotation class]]) 
        {
            [mapView removeAnnotation:annotation];
        }
    }

//If empty locations then display current location

[marketLocations removeAllObjects];

if([lat count]==0)
{

            marketAnnotation = [[MKPointAnnotation alloc]init];
            annotationCoord.latitude = currentLocationLatitude;
            annotationCoord.longitude =currentLocationLongitude;
            marketAnnotation.coordinate = annotationCoord;
            [self.mapView addAnnotation:marketAnnotation];
            [marketLocations addObject:marketAnnotation];
            [mapView reloadInputViews];

}
for (int y = 0; y <[lat count]; y++)
    {
        NSLog(@"MapView ");

        marketAnnotation = [[MKPointAnnotation alloc]init];
        annotationCoord.latitude = [[lat objectAtIndex:y]floatValue];
        annotationCoord.longitude =[[lon objectAtIndex:y]floatValue];
        marketAnnotation.coordinate = annotationCoord;
        [self.mapView addAnnotation:marketAnnotation];
        [marketLocations addObject:marketAnnotation];

        [mapView reloadInputViews];

    }

希望它可以帮助你......!