티스토리 뷰

반응형

안녕하세요 :) Zedd입니다.

그냥..어떻게 해결한지 적어놓고 싶어서!!


<내가 하고싶었던 일>

마커를 선택하면 popViewController를 하고싶었음.

open func onMapOverlay(_ poiDataOverlay: NMapPOIdataOverlay!, imageForOverlayItem poiItem: NMapPOIitem!, selected: Bool) -> UIImage!{

}

위 메소드는 처음 딱 맵뷰가 뜨면 한번 불리고, 마커를 클릭하면 또 한번 불립니다.

하지만, 한번 더 클릭하면 이제 안불림.....

그리고 처음 딱 맵뷰가 뜨면 반드시 한번 불리기 때문에, 여기서 popViewController를 해주면 지도가 뜨지도 않게 됩니다. 바로 pop해버리므로. (지금 네비게이션 컨트롤러 위에서 네이버 지도가 작동하는거임.)

func onMapOverlay(_ poiDataOverlay: NMapPOIdataOverlay!, viewForCalloutOverlayItem poiItem: NMapPOIitem!, calloutPosition: UnsafeMutablePointer<CGPoint>!) -> UIView!{

}

그래서 찾은 메소드.

일단 위 메소드가 하는 일은  


이런식으로 마커를 클릭하면 View가 나오도록 해줍니다. 


리턴값이 UIView이므로, 일단 UIView를 리턴해줘야합니다.

그래서...일단 나는 아무View를 띄우고싶지않은데.......그냥 마커를 클릭하면 어떤 행동을 해주고 싶은건데...

그래서 UIView객체를 만들어놓고, 그걸 리턴해주니


'CALayerInvalidGeometry', reason: 'CALayer position contains NaN



이라는 오류를 만나게 되었습니다...



그래서 혹시나 해서 


func onMapOverlay(_ poiDataOverlay: NMapPOIdataOverlay!, viewForCalloutOverlayItem poiItem: NMapPOIitem!, calloutPosition: UnsafeMutablePointer<CGPoint>!) -> UIView?{

return nil

}


을 해줬는데..아주 잘됩니다.

결론 : 마커를 클릭할 때마다 Zedd라는 글자가 나오게 하고싶다?

위 메소드에 print문을 넣어놓고 nil만 리턴하면 가능합니다.


반응형