J'essaie d'ajouter plusieurs marqueurs sur Googlemaps dans mon application.Impossible d'ajouter plusieurs marqueurs dans GSMapView xCode Swift 3
Dans le viewcontrolller sous viewDidLoad, je peux charger la carte et un seul marqueur.
override func viewDidLoad() {
super.viewDidLoad()
title = NSLocalizedString("section_map", comment: "test")
let camera = GMSCameraPosition.camera(withLatitude: 48.7784, longitude:9.18121, zoom: 12)
let mapView = GMSMapView.map(withFrame: .zero, camera: camera)
view = mapView
mapView.settings.myLocationButton = true
mapView.delegate = self
let marker = GMSMarker()
marker.position = CLLocationCoordinate2D(latitude: 48.7784,longitude: 9.18121)
marker.title = "title"
marker.snippet = "snipple"
marker.icon = UIImage(named:"pin_you")
marker.map = mapView
mapData()
}
Il appelle MapData() et à partir de là est un fichier JSON est généré après l'analyse syntaxique setPin est appelée à définir les marqueurs
func setPin(){
DispatchQueue.main.async {
for item in self.mapItems {
print (" \(item.name) \(item.marker) \(item.latitude) \(item.longitude)")
let marker = GMSMarker()
marker.position = CLLocationCoordinate2D(latitude: item.latitude,longitude: item.longitude)
marker.title = item.name
marker.snippet = item.fulladdress
var iconImage: String
switch (item.marker){
case 1:
iconImage = "pin_silver"
case 2:
iconImage = "pin_blue"
case 3:
iconImage = "pin_gold"
case 6:
iconImage = "pin_you"
default:
iconImage = "pin_silver"
}
marker.icon = UIImage(named:iconImage)
marker.map = self.mapView
}
}
}
Les broches ne sont pas représentés.
L'impression à pour objet self.mapItems montre
Position number A 1 48.76947562 9.15440351
Position number B 1 48.75716485 9.17081058
Position number C 1 48.81191625 9.22752149
Position number D 2 48.81192516 9.22766708
cela signifie que toutes les données approprié est disponible. Cependant la carte est là la seule broche faite dans viewDidLoad Les Marqueurs dans la fonction setPin ne sont pas montrés ou peut-être pas définis.
Est-ce que quelqu'un a une idée?
Pouvez-vous me dire self.mapView Où est-il déclaré? –
Pouvez-vous vérifier si self.mapView est correctement initialisé. Je vous ai vu initialisé localement ce ci-dessous: - nous Mapview = GMSMapView.map (withFrame: .zero, appareil photo: appareil photo) Et vous devez avoir un objet affichage de la carte en dehors de la fonction viewDidLoad en haut. Cet objet de carte particulier doit être initialisé et configuré correctement. –
@Manish Pathak.J'ai ceci juste après le mapViewController: UIViewController {(at) IBOutlet faible var mapView: GMSMapView! – Charley57