向 GMSMapView 子视图添加标记 ios

Adding a marker to a GMSMapView subview ios

我正在使用 Google 地图 cocoapod,但我不知道如何向我的地图添加标记。我的地图在子视图中。我把它放在 viewDidLoad 的一组视图中,因为出于某种原因我不明白它总是在我可以在 viewDidLoad 之外的方法中访问它之前被删除 - 不理想,但这是我能想出的唯一方法来保存它.无论如何,我正在尝试添加一个标记。当我像这样将地图设置到我的主视图时,它工作正常:

var camera: GMSCameraPosition = GMSCameraPosition.cameraWithLatitude(37.7833, longitude: -122.4167, zoom: 6)
    var mapView = GMSMapView.mapWithFrame(CGRectZero, camera: camera)

    self.view = mapView

    var marker = GMSMarker()
    marker.position = camera.target
    marker.map = mapView

但是,当我尝试将标记添加到我从子视图数组中获取的子视图时,它没有显示:

var tempMapSubView = self.views[0] as! GMSMapView

    var camera: GMSCameraPosition = GMSCameraPosition.cameraWithLatitude(37.7833, longitude: -122.4167, zoom: 6)
    var mapView = GMSMapView.mapWithFrame(CGRectZero, camera: camera)

    tempMapSubView.camera = camera
    tempMapSubView = mapView

    var marker = GMSMarker()
    marker.position = camera.target
    marker.map = tempMapSubView

子视图数组解决方案与我尝试做的所有其他事情配合得很好。感谢您的帮助!

您是否使用 google 地图通过 IP 或 GPS 获取您的设备传感器?如果是,它应该自动放置一个标记。然后您可以将标记坐标传递给字符串。

您的代码正在从 self.views[0] 获取地图,然后创建新地图,然后向该新地图添加标记。然后您对新地图什么都不做,因此它不会显示。原始地图中未添加任何内容,因此您看不到标记。

我想你需要这样的东西:

var tempMapSubView = self.views[0] as! GMSMapView

var position = CLLocationCoordinate2DMake(37.7833, -122.4167)

var marker = GMSMarker()
marker.position = position
marker.map = tempMapSubView