美文网首页
iOS 高德地图官方DEMO iOS_ClusterAnnota

iOS 高德地图官方DEMO iOS_ClusterAnnota

作者: 不会写代码的尬先生 | 来源:发表于2018-07-24 18:38 被阅读0次

    用了官方给的demo里的四叉树点聚合算法,偶然间发现一个大BUG,如果两个坐标点经纬度完全一致,只有一个点能添加到地图上。

    折腾后发现ClusterAnnotation里重写了该类的hash方法

    - (NSUInteger)hash
    {
        NSString *toHash = [NSString stringWithFormat:@"%.5F%.5F%ld", self.coordinate.latitude, self.coordinate.longitude, (long)self.count];
        return [toHash hash];
    }
    
    - (BOOL)isEqual:(id)object
    {
        return [self hash] == [object hash];//根据对象的hash值判断是否相等
    }
    

    细心的小伙伴已经发现了,他这里的处理有问题,这里是用经纬度加聚合个数取hash来做isEqual操作,如果两个点经纬度相同且聚合个数一样,那就会有问题。

    故改良如下

    - (NSUInteger)hash
    {
        NSString *toHash = [NSString stringWithFormat:@"%.5F%.5F%@", self.coordinate.latitude, self.coordinate.longitude,self.uid];
        return [toHash hash];
    }
    

    给每个点设置唯一的uid,这样就保证了点标的唯一性。

    以上。

    相关文章

      网友评论

          本文标题:iOS 高德地图官方DEMO iOS_ClusterAnnota

          本文链接:https://www.haomeiwen.com/subject/gdpymftx.html