Je charge les données du serveur et les transmets à un tableau. Ces données incluent des coordonnées, du texte, des images, etc. Il contient également une variable, nommée "id" (j'ai pensé à trier un tableau pour un identifiant spécifique, mais je ne sais pas si c'est une bonne solution). Ces données sont utilisées pour afficher les marqueurs sur la carte. Ma tâche consiste à afficher les détails de ce marqueur sur une vue séparée. Comment dire à cet écran de détails quel marqueur a été choisi ou comment obtenir un élément spécifique du tableau en fonction du marqueur choisi?

C'est là que je crée des marqueurs:

for element in spots {
        let image = UIImage(named: element.type)

        let position = CLLocationCoordinate2D(latitude: element.coordinates.latitude, longitude:
            element.coordinates.longitude)
        marker = GMSMarker(position: position)
        marker.icon = image
        marker.map = mapView
    }
0
Artem Boordak 4 nov. 2019 à 16:29

2 réponses

C'est une question assez générique, et il existe de nombreuses façons de transmettre des données entre des objets dans Swift / Cocoa, par ex. enchaînements, délégués, notifications, modèle singleton, ou tout simplement l'initialisation directe avec injection de dépendance ou sans:

let separateView = SeparateView()
separateView.marker = marker // Note that you need a var defined in your separate view in order to set it sooner, marker is your marker defined from before
navigationController?.pushViewController(separateView, animated: true)
0
Adis 4 nov. 2019 à 14:01

Vous pouvez utiliser la méthode déléguée GMS pour vérifier quel marqueur est exploité.

for element in spots {
    let image = UIImage(named: element.type)

    let position = CLLocationCoordinate2D(latitude: element.coordinates.latitude, longitude:
        element.coordinates.longitude)
    marker = GMSMarker(position: position)
    marker.icon = image
    marker.map = mapView
    // add the element info to marker userData property 
    marker.userData = element
}


// function to check if which icon tapped

func mapView(_ mapView: GMSMapView, didTap marker: GMSMarker) -> Bool {

    // get the element info from marker
    let element = marker.userData
    //code to navigate to detail view
}

J'espère que cela vous aidera!

1
Ravi Kumar 4 nov. 2019 à 14:03