设置特定的高级标记属性后,您可以监控标记事件 例如点按和手势。 如果用户点按某个标记,则可以看到标记标题等其他信息 或代码段。用户还可以使用长按手势移动可拖动标记。
- 如需跟踪标记事件,请添加
GMSMapViewDelegate
您的view
。 - 要使标记可拖动,请将
GMSMarker.draggable
属性。 - 要为标记设置描述性文本,请使用
GMSMarker.title
属性。
响应标记事件
您可以通过将标记事件添加到
GMSMapViewDelegate
协议添加到您的视图和
实现相应的回调。此示例标识了 title
和
选定标记的 snippet
。
Swift
// MARK: GMSMapViewDelegate func mapView(_ mapView: GMSMapView, didTap marker: GMSMarker) -> Bool { if let title = marker.title { if let snippet = marker.snippet { print("marker title: \(title): snippet: \(snippet)") } } return true }
Objective-C
// MARK: GMSMapViewDelegate - (BOOL)mapView:(GMSMapView *)mapView didTapMarker:(GMSMarker *)marker { if (marker.title && marker.snippet) { NSLog(@"marker with title:%@ snippet: %@", marker.title, marker.snippet) } return YES; }
按地图的缩放级别控制标记的可见性
如需控制 GMSMarker
的可见性,请实现
GMSMapViewDelegate
协议并添加要设置的条件
GMSMarker.map
。
Swift
// MARK: GMSMapViewDelegate func mapView(_ mapView: GMSMapView, didChange position: GMSCameraPosition) { marker.map = position.zoom >= 14 ? mapView : nil }
Objective-C
// MARK: GMSMapViewDelegate - (void)mapView:(GMSMapView *)mapView didChangeCameraPosition:(GMSCameraPosition *)position { marker.map = position.zoom >= 14 ? mapView : nil; }
使标记可拖动
您启用 draggable
属性后,用户可使用
长按手势如需使标记可拖动,请将 GMSMarker.draggable
属性设为 true。
Swift
marker.draggable = true
Objective-C
marker.draggable = YES;