MapViewで2つのアノテーションを表示しようとしています。2番目のMKPointAnnotationが表示されない理由
MapViewに2番目の注釈が表示されないのはなぜですか?目印[0]をマーク[1]に変更しようとしましたが、助けが必要ありません。
私は句のために使用できましたが、テストのためにコードを繰り返しました。
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]を、ありがとう。私はそれ自身の関数であるgeoCodeを配置し、viewDidLoad関数から呼び出すかもしれません。約100の注釈があります。 – Erva
@Ervaは、ジオコードにレート制限があることに注意してください。 docsからアプリケーションはジオコーディングの使い方を意識している必要があります。ジオコーディングリクエストは各アプリのレート制限があるため、短時間でリクエストを増やすとリクエストの一部が失敗する可能性があります。 (最大レートを超えると、ジオコーダーは値networkを持つエラーオブジェクトを対応する補完ハンドラーに返します)。 –
for節で約100のアドレスで既にテストしました。ジオコードはアドレスの約1/5を解決しませんでした。これが理由を説明します。私はジオコードがアドレスを「知っていない」と思ったが、おそらくそれはレート制限のためだ。完了ハンドラがエラーメッセージを表示しませんでした。 – Erva