滚动单元格时如何将地图注释链接到ui收集单元格突出显示注释

时间:2019-01-14 16:22:44

标签: swift scroll uicollectionview annotations

正如标题所描述的那样,我不知道触发链接的函数或方法。

我已经将所有注释添加到地图中。

希望有人可以给出具体的示例代码,谢谢。

1 个答案:

答案 0 :(得分:0)

一些想法:

  1. 您的代码显示为:

    func scrollViewDidScroll(_ scrollView: UIScrollView) {
        if scrollView is UICollectionView {
            let collectionViewCenter = CGPoint(x: myMap.bounds.size.width / 2 + myMap.frame.minX, y: myMap.bounds.size.height / 2 + myMap.frame.minY)
            let centredCellIndexPath = cafeCollectionView.indexPathForItem(at: collectionViewCenter)
    
            guard let path = centredCellIndexPath else {
                // There is no cell in the center of collection view (you might want to think what you want to do in this case)
                return
            }
    
            // select annotation here, if needed
        }
    }
    

    您要将collectionViewCenter设置为地图的中心,但如果要查找{{1 }},您应该使用集合视图centeredCellIndexPath的中心,而不是地图的中心。

    如果您的地图(如AirBnb应用程序)的大小不同于集合视图的大小,则您可能要为集合视图{{1}之外的bounds调用indexPathForItem(at:) },在这种情况下不会获得任何成功。

    因此,例如,如果您想要集合视图的中心,可以将CGPoint分配替换为以下内容:

    bounds

    或者,如果您想让该单元格位于左侧,请使用一些固定的collectionViewCenter值代替let collectionViewCenter = CGPoint(x: cafeCollectionView.bounds.midX, y: cafeCollectionView.bounds.midY)

  2. 您选择注释的代码似乎也不正确。您正在做

    x

    这实际上表示“如果所选注解是我们想要的注解,请选择它。”我想您想要相反的意思,即:

    • 找到应选择的注释;
    • 如果未选中,请这么做。