2016-12-24 5 views

ответ

0

Существует несколько способов сделать это. Один из них - добавить маркер, когда пользователь долго нажимает на карту. Для обнаружения длинных нажатий, реализовать этот метод делегата:

func mapView(_ mapView: GMSMapView, didLongPressAt coordinate: CLLocationCoordinate2D) { 
    let marker = GMSMarker(position: coordinate) 
    // marker.isDraggable = true 
    // marker.appearAnimation = kGMSMarkerAnimationPop 
    marker.map = mapView 
    // marker.icon = GMSMarker.markerImage(with: UIColor.blue) 
} 

В закомментированных линиях не являются обязательными, поскольку они только настройками пользовательских атрибутов маркеров. Есть еще много возможностей, которые вы можете настроить.

Кроме того, если вы еще не сделали этого, добавьте GMSMapViewDelegate к представлению класса контроллера Декларация:

class YourViewController: UIViewController, GMSMapViewDelegate { 

и назначить self к delegate собственности:

let camera = GMSCameraPosition.camera(withLatitude: 0, longitude: 0, zoom: 3) 
    let mapView = GMSMapView.map(withFrame: CGRect.zero, camera: camera) 
    mapView.isMyLocationEnabled = true 
    view = mapView 

    mapView.delegate = self // add this line! 

Кроме того, вы могут добавлять маркеры, когда происходят другие события. Например, вы можете добавить маркер, когда пользователь нажимает на UIBarBUttonItem или UIButton. Все зависит от тебя! Но процесс добавления кнопки в основном эти две линии:

let marker = GMSMarker(position: coordinate) 
marker.map = mapView 
// mapView is the map that you want to add the marker to. If you are doing this outside a delegate method, use self.view 

Вы можете также рассмотреть вопрос о добавлении маркеров в коллекцию, так что вы можете изменить их позже.

+0

Если вы считаете, что мой ответ отвечает на ваш вопрос, пожалуйста, подумайте о том, чтобы принять его, нажав на эту галочку! @lust – Sweeper