MapView에서 두 개의 주석을 표시하려고합니다.두 번째 MKPointAnnotation이 표시되지 않는 이유는 무엇입니까?
두 번째 주석이 MapView에 표시되지 않는 이유는 무엇입니까? 아이콘 [0]을 장소 표시로 변경하려고했으나 [1] 아무런 도움이되지 않았습니다.
나는 for 절을 사용할 수 있었지만 테스트를 위해 코드를 반복했다.
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 개의 주소로 이미 테스트했습니다. 지오 코드는 주소의 1/5을 해결하지 못했습니다. 이것은 이유를 설명합니다. 지오 코드가 주소를 "알지 못했다"고 생각했지만 아마 속도 제한 때문일 것입니다. 완료 핸들러에서 오류 메시지를 표시하지 않았습니다. – Erva