3

我正在放置联系人的针脚,有些针脚具有相同的经度和纬度。当 Pin 图被放到地图上时,它们会显示出来,但是当我触摸一次有两个以上联系人时,我只会看到第一个和最后一个。

那么,在相同的经纬度上处理多个联系人的最佳方式是什么?

理想情况下,我想我可以显示该位置的数量,然后我希望用户可以继续触摸图钉,它会循环浏览注释。我不确定该怎么做,或者是否有更好的解决方案。

感谢您对问题的任何帮助或见解。

4

2 回答 2

1

这是一个想法:

k-均值

在现有注释上运行 K-means 算法(参见https://stackoverflow.com/a/5978803/412916),并在引脚密度超过任意数字时删除集群注释。如果用户触摸针脚,您可以添加注释并为来自集群针脚的动画制作动画。我建议您在动画时禁用交互,因为逻辑变得混乱。

于 2013-02-12T22:08:02.650 回答
0

我会让一个注释代表该纬度和经度的所有联系人/对象的 NSDictionary。用不同颜色的 pin 表示多个 lat&long。

-(MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id<MKAnnotation>)annotation
{
    static NSString *identifier = @"AnnotationIdentifier";

    if ([annotation isKindOfClass:[NSDictionary class]]) {
//Code here to show red pin vs. blue pin
}
}

你需要一个自定义的 MKPinAnnotationView 子类的 init 方法,比如:

-(id)initWithCoordinate:(CLLocationCoordinate2D) coordinateC:(NSDictionary *)dictionaryParam;

最后,要在触摸该引脚时运行一个方法,如下所示:

-(void)mapView:(MKMapView *)mapView didSelectAnnotationView:(MKAnnotationView *)view
{
     if ([view.annotation class] == [NSDictionary class]) {
        NSLog(@"multiple");

// more code here to run a view for multiple contacts

    }
    else
    {
...
}
}
于 2013-02-12T21:35:36.483 回答