[iOS] 맵(MKMapView)에 핀이 표시되지 않았을 때 확인

4746 단어 지도.MapKitiOS

이것은 무엇이냐


Stack Overflow의 mapkit 해시태그를 구독하니 "지도에 핀이 표시되지 않으니 도와주세요!"이런 문제를 자주 본다.대개 다음 3가지 유형의 원인이기 때문에 확인해야 할 부분을 정리해 보겠습니다.

1. delegate 설정 여부


의외로 설정을 잊어버린 경우MKMapViewDelegate가 많았다.
먼저 정계부 협의가 발표되었는지 확인한다.
class ViewController: UIViewController, MKMapViewDelegate {
다음delegate 처리 의뢰 속성을 설정하는 대상이 있는지 확인합니다.
mapView.delegate = self
Storyboard로 설정할 때

그리고 경계부호를 설치했는지 확인하세요.
func mapView(_ mapView: MKMapView, viewFor annotation: MKAnnotation) -> MKAnnotationView? {
    if annotation is MKUserLocation {
        return nil
    }

    let reuseId = "pin"
    var pinView = mapView.dequeueReusableAnnotationView(withIdentifier: reuseId) as? MKPinAnnotationView
    if pinView == nil {
        pinView = MKPinAnnotationView(annotation: annotation, reuseIdentifier: reuseId)
    }
    else {
        pinView?.annotation = annotation
    }

    return pinView
}
이렇게 하면 디스플레이 핀을 표시할 수 있다!

2. MKAnnotation View 사용 여부


탭을 표시할 때 MKAnnotationView 사용하지 않으면 아무것도 보이지 않습니다.
참고로 MKPinAnnotationView는 핀에 그림을 사용할 때 사용합니다.
pinView = MKAnnotationView(annotation: annotation, reuseIdentifier: reuseId)
pinView?.image = UIImage(named: "Laugh")

3. 위도 경도가 틀렸는지 여부


위도와 경도가 상반되는 경우도 간혹 볼 수 있다.반환MKAnnotationView
public func CLLocationCoordinate2DMake(_ latitude: CLLocationDegrees, _ longitude: CLLocationDegrees) -> CLLocationCoordinate2D
매개 변수에 설정된 값을 잘못하지 않도록 주의하십시오.
예컨대
  • 위도: 35.65834
  • 경도: 139.701636
  • 경우
    let coordinate = CLLocationCoordinate2DMake(35.658034, 139.701636)
    
    .

    좋은 웹페이지 즐겨찾기