1

我有自己的自定义子类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,因为我将其添加到地图中。但它是 type MGLPointFeature。所以我猜 Mapbox 会以某种方式将我的自定义 PointFeature 复制到常规的 PointFeature 上?

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

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

4

1 回答 1

0

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

于 2019-08-15T11:41:01.447 回答