如何在Google Map iOS SDK中获得特定的标记ID

我正在谷歌地图iOS sdk上工作。 在这里我创build了多个标记在不同的位置坐标。

现在我需要添加像TAG这样的标识符来为所有标记执行特定标记的操作。

如果谷歌地图iOS sdk中没有TAG或其他标识符选项,请告诉我如何将其归档。

提前致谢。

我所做的只是inheritanceGMSMarker,并添加任何我需要的数据,我想这是最好的,最简单的选项。

@interface ATGoogleMapsSelectiveMarker : GMSMarker @property (nonatomic) int markerID; @property (nonatomic) int order; @property (strong, nonatomic) NSObject* referenceObject; @property (nonatomic) BOOL selected; @end 

编辑:

我认为这很清楚,但是我将继续讨论如何获取数据…当您创build标记并将其添加到地图中时,您将创buildATGoogleMapsSelectiveMarker并在您填充所需的所有内容后将其添加到地图中,然后你注册任何你想要的类作为实现GMSMapViewDelegate的代理,并且实现这个方法

 - (BOOL)mapView:(GMSMapView *)mapView didTapMarker:(GMSMarker *)marker { // Here you are sure that your marker object is of type ATGoogleMapsSelectiveMarker but it won't harm to double check if ([marker isKindOfClass:[ATGoogleMapsSelectiveMarker class]]) { ATGoogleMapsSelectiveMarker* parsedMarker = (ATGoogleMapsSelectiveMarker*)marker; NSLog(@"%d", parsedMarker.markerId); } return YES; } 

Swift解决scheme:

您可以通过为标记的键设置值来将标识符或任何事物添加到标记中:

 marker.setValue("20", forKey: "id") 

你可以稍后使用:

 marker.value(forKey: "id") 

要么

我的方法是通过创build一个扩展GMSMarker和使用userData属性,使GMSMarker符合我的需要,对我来说,我想添加每个标记分支类的实例(具有某些公司的分支标记地图)和这是我做的方式:

 extension GMSMarker { var branch: Branch { set(branch) { self.userData = branch } get { return self.userData as! Branch } } } 

所以当我设置标记属性,我这样设置:

 marker.branch = someBranch 

比marker.userData = someBranch更清晰,更可读?