0
我試圖在MapView中顯示兩個註釋。爲什麼第二個MKPointAnnotation不顯示?
爲什麼第二個註釋不顯示在MapView中?我試圖改變地標[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)
}
}
})
}
好,感謝您的回答。我可能會把geoCode放到它自己的函數中,並從viewDidLoad函數調用它。會有大約100個註釋。 – Erva
@Erva意識到地理編碼有一個速率限制。 來自文檔'應用程序應該意識到他們如何使用地理編碼。地理編碼請求對每個應用都是速率限制的,因此在短時間內請求太多可能會導致某些請求失敗。 (當超過最大速率時,地理編碼器將帶有網絡值的錯誤對象返回給關聯的完成處理程序。)' –
我已經在for子句中測試了大約100個地址。 Geocode沒有解決大約1/5的地址。這解釋了原因。我認爲地址代碼並不「知道」地址,但可能是因爲費率限制。完成處理程序沒有給出任何錯誤消息。 – Erva