Ich versuche, zwei Anmerkungen in MapView anzuzeigen.Warum wird MKPointAnnotation nicht angezeigt?
Warum wird die zweite Annotation in MapView nicht angezeigt? Ich habe versucht, Ortsmarkierungen [0] zu ändern, um Markierungen [1] zu setzen, aber ohne Hilfe.
Ich hätte für Klausel verwendet werden können, aber zum Testen wiederholte ich den Code.
class Asiakas {
var nimi = ""
var osoite = ""
init(nimi: String, osoite: String) {
self.nimi = nimi
self.osoite = osoite
}
}
class ViewController: UIViewController {
@IBOutlet weak var mapView: MKMapView!
var asiakkaat:[Asiakas] = [
Asiakas(nimi: "Testi Asiakas", osoite: "Museokatu 10, helsinki"),
Asiakas(nimi: "Hyvä asiakas", osoite: "Pihlajatie 17, helsinki")
]
var asiakas:Asiakas!
override func viewDidLoad() {
super.viewDidLoad()
let geoCoder = CLGeocoder()
geoCoder.geocodeAddressString(asiakkaat[0].osoite, completionHandler: { placemarks, error in
if error != nil {
print(error)
return
}
if let placemarks = placemarks {
let placemark = placemarks[0]
let annotation = MKPointAnnotation()
if let location = placemark.location {
annotation.coordinate = location.coordinate
self.mapView.addAnnotation(annotation)
}
}
})
geoCoder.geocodeAddressString(asiakkaat[1].osoite, completionHandler: { placemarks, error in
if error != nil {
print(error)
return
}
if let placemarks = placemarks {
let placemark = placemarks[0]
let annotation = MKPointAnnotation()
if let location = placemark.location {
annotation.coordinate = location.coordinate
self.mapView.addAnnotation(annotation)
}
}
})
}
Ok, danke für deine Antwort. Ich könnte geoCode auf seine eigene Funktion setzen und sie von der viewDidLoad Funktion aufrufen. Es wird ungefähr 100 Anmerkungen geben. – Erva
@Erva beachten, dass der Geocode ein Ratenlimit hat. Aus der Dokumentation 'Anwendungen sollten bewusst sein, wie sie Geocodierung verwenden. Geocodierungsanforderungen sind für jede App ratenbegrenzt. Wenn also in kurzer Zeit zu viele Anfragen eingehen, können einige der Anforderungen fehlschlagen. (Wenn die maximale Rate überschritten wird, gibt der Geocodierer ein Fehlerobjekt mit dem Wert Netzwerk an den zugehörigen Beendigungshandler zurück.) ' –
Ich habe bereits mit ungefähr 100 Adressen in for-Klausel getestet. Der Geocode hat ungefähr 1/5 der Adressen nicht aufgelöst. Dies erklärt warum. Ich dachte, Geocode habe Adressen nicht "gewusst", aber wahrscheinlich liegt es daran, dass die Rate begrenzt ist. Der Beendigungshandler hat keine Fehlermeldungen ausgegeben. – Erva