如何在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更清晰,更可读?