我有自己的MGLPointFeature自定义子类。我为实例创建源,如下所示:

let myAnnotations: [MySubclassType] = /* code that generates those annotations */
let source = MGLShapeSource(identifier: "some_identifier",
                            features: myAnnotations,
                            options: [.clustered: true, .clusterRadius: 40])


我还要添加一个MGLSymbolStyleLayer现在显示这些注释。

一切正常。我的MGLMapView正确显示了我的注释。真好!校验!

因此,现在我很想知道用户何时点击它们。 (请注意,我对注释进行了聚类,因此将其分别添加到mapView无效。)

好的...所以现在我像这样检测水龙头:

let rect = CGRect(x: tapPoint.x, y: tapPoint.x, width: 0, height: 0).insetBy(dx: -10, dy: -10)
// I inset it so that the user does not have to be thaaaat super accurate
let features = mapView.visibleFeatures(in: rect)


现在,我可以轻松掌握这些功能。还算可以!
但是....我希望该特征为MySubclassType类型,因为我将该特征添加到了地图中。但是,它的类型为MGLPointFeature。所以我想Mapbox会以某种方式将我的自定义PointFeature复制到普通的PointFeature?

所以...我的问题是...我该如何到达我创建的点特征的实例(在这里我附加了我想知道的其他信息)。我知道我可以将它们简单地添加到attributes字段中,但是然后我需要再次查询我的数据...没有更简单的方法吗?

另外...如果我对点进行更多样式设置,则为其设置2-3层(背景和图标f.e.),我会得到多个MGLPointFeature实例...这是要这样吗?

最佳答案

也许就像uitableviewcell一样,您将其转换为自己的自定义单元格来访问属性?

09-19 00:14