我有自己的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一样,您将其转换为自己的自定义单元格来访问属性?